uc_roles.test in Ubercart 7.3
Role assignment product feature tests.
File
uc_roles/tests/uc_roles.testView source
<?php
/**
* @file
* Role assignment product feature tests.
*/
/**
* Tests the role purchase functionality.
*/
class UbercartRolesTestCase extends UbercartTestHelper {
public static function getInfo() {
return array(
'name' => 'Roles',
'description' => 'Ensures that the purchase of roles functions correctly.',
'group' => 'Ubercart',
);
}
/**
* Overrides DrupalWebTestCase::setUp().
*/
protected function setUp($modules = array(), $permissions = array()) {
$modules = array(
'uc_payment',
'uc_payment_pack',
'uc_roles',
);
// Needed to see/modify roles on the /user/%/edit page.
$permissions = array(
'administer permissions',
'administer users',
'view all role expirations',
);
parent::setUp($modules, $permissions);
}
public function testRolePurchaseCheckout() {
// Add role assignment to the test product.
$rid = $this
->drupalCreateRole(array(
'access content',
));
$this
->drupalLogin($this->adminUser);
$this
->drupalPost('node/' . $this->product->nid . '/edit/features', array(
'feature' => 'role',
), t('Add'));
$edit = array(
'uc_roles_role' => $rid,
'end_override' => TRUE,
'uc_roles_expire_relative_duration' => 1,
'uc_roles_expire_relative_granularity' => 'day',
);
$this
->drupalPost(NULL, $edit, t('Save feature'));
// Check out with the test product.
$this
->drupalPost('node/' . $this->product->nid, array(), t('Add to cart'));
$order = $this
->checkout();
uc_payment_enter($order->order_id, 'other', $order->order_total);
// Test that the role was granted.
$account = user_load($order->uid);
$this
->assertTrue(isset($account->roles[$rid]), 'Existing user was granted role.');
// Test that the email is correct.
$mail = $this
->findMail('/Ubercart: ' . preg_quote($account->roles[$rid]) . ' role granted/');
// Delete the user.
user_delete($order->uid);
// Run cron to ensure deleted users are handled correctly.
$this
->drupalLogout();
$this
->cronRun();
}
public function testRoleAdminDelete() {
// Add role assignment to the test product.
$rid = $this
->drupalCreateRole(array(
'access content',
));
$this
->drupalLogin($this->adminUser);
$this
->drupalPost('node/' . $this->product->nid . '/edit/features', array(
'feature' => 'role',
), t('Add'));
$edit = array(
'uc_roles_role' => $rid,
'end_override' => TRUE,
'uc_roles_expire_relative_duration' => 1,
'uc_roles_expire_relative_granularity' => 'day',
);
$this
->drupalPost(NULL, $edit, t('Save feature'));
// Check out with the test product.
$this
->drupalPost('node/' . $this->product->nid, array(), t('Add to cart'));
$order = $this
->checkout();
uc_payment_enter($order->order_id, 'other', $order->order_total);
// Test that the role was granted.
$account = user_load($order->uid);
$this
->assertTrue(isset($account->roles[$rid]), 'Existing user was granted role.');
// Test that the role appears on the user edit page.
$this
->drupalGet('user/' . $order->uid . '/edit');
$this
->assertText('Ubercart roles', 'Ubercart roles fieldset found.');
$this
->assertNoText('There are no pending expirations for roles this user.', 'User has a role expiration.');
// Delete the role using the Drupal user edit page
// by unchecking the role and submitting the form.
$this
->drupalPost('user/' . $order->uid . '/edit', array(
'roles[' . $rid . ']' => FALSE,
), t('Save'));
// Test that the role was removed.
$account = user_load($order->uid, TRUE);
$this
->assertFalse(isset($account->roles[$rid]), 'Role was removed from user.');
// Test that the role expiration data was removed.
$this
->assertText('There are no pending expirations for roles this user.', 'User has no role expirations.');
}
}
Classes
Name![]() |
Description |
---|---|
UbercartRolesTestCase | Tests the role purchase functionality. |