'Roles', 'description' => 'Ensures that the purchase of roles functions correctly.', 'group' => 'Ubercart', ); } /** * Overrides DrupalWebTestCase::setUp(). */ function setUp() { $modules = array('uc_payment', 'uc_payment_pack', 'uc_roles'); $permissions = array(); parent::setUp($modules, $permissions); } 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(); } }