function SimplenewsRolesResyncTestCase::testResync in Simplenews Roles 7
File
- tests/
simplenews_roles.test, line 459 - SimplenewsRoles test functions.
Class
Code
function testResync() {
// Create an admin user.
$permissions = array(
'administer content types',
'administer nodes',
'access administration pages',
'administer newsletters',
'administer simplenews settings',
'administer simplenews subscriptions',
'create simplenews content',
'edit own simplenews content',
);
$admin_user = $this
->drupalCreateUser($permissions);
$this
->drupalLogin($admin_user);
// Create role "subscriber to list x".
$role = new stdClass();
$role->name = 'subscriber to list x';
$role->weight = 3;
user_role_save($role);
$permissions = array(
'administer newsletters',
'administer simplenews settings',
'administer simplenews subscriptions',
);
$role = user_role_load_by_name($role->name);
user_role_grant_permissions($role->rid, $permissions);
$this
->drupalLogout();
// Create three users and assign them "subscriber to list x" role.
$user_1 = $this
->drupalCreateUser(array(
'administer permissions',
'administer users',
));
$this
->drupalLogin($user_1);
$edit = array();
$edit['roles[' . $role->rid . ']'] = $role->rid;
$this
->drupalPost('user/' . $user_1->uid . '/edit', $edit, t('Save'));
$this
->drupalLogout();
$user_2 = $this
->drupalCreateUser(array(
'administer permissions',
'administer users',
));
$this
->drupalLogin($user_2);
$edit = array();
$edit['roles[' . $role->rid . ']'] = $role->rid;
$this
->drupalPost('user/' . $user_2->uid . '/edit', $edit, t('Save'));
$this
->drupalLogout();
$user_3 = $this
->drupalCreateUser(array(
'administer permissions',
'administer users',
));
$this
->drupalLogin($user_3);
$edit = array();
$edit['roles[' . $role->rid . ']'] = $role->rid;
$this
->drupalPost('user/' . $user_3->uid . '/edit', $edit, t('Save'));
$this
->drupalLogout();
$user_4 = $this
->drupalCreateUser(array(
'administer permissions',
'administer users',
));
// Create newsletter category.
$this
->drupalLogin($admin_user);
$this
->drupalGet('admin/config/services/simplenews');
$this
->clickLink(t('Add newsletter category'));
$name = $this
->randomName();
$edit = array(
'name' => $name,
'description' => $this
->randomString(20),
);
$this
->drupalPost(NULL, $edit, t('Save'));
// Find $tid based on the category name.
drupal_static_reset('simplenews_categories_load_multiple');
$categories = simplenews_categories_load_multiple();
$tid = NULL;
foreach ($categories as $category) {
if ($category->name == $name) {
$tid = $category->tid;
}
}
// Add user 4 to list, add anonymous subscribers also.
$this
->drupalGet('admin/people/simplenews');
$this
->clickLink(t('Mass subscribe'));
$anonymous = array();
$anonymous[] = $this
->randomName() . '@' . $this
->randomName() . '.com';
$anonymous[] = $this
->randomName() . '@' . $this
->randomName() . '.com';
$anonymous[] = $this
->randomName() . '@' . $this
->randomName() . '.com';
$edit = array(
'emails' => $user_4->mail . ',' . rtrim(implode(',', $anonymous), ','),
"newsletters[{$tid}]" => $tid,
);
$this
->drupalPost(NULL, $edit, t('Subscribe'));
// Setup sync (list => role), trigger sync.
$edit = array();
$edit['roles[' . $role->rid . ']'] = $role->rid;
$this
->drupalPost('admin/config/services/simplenews/categories/' . $tid . '/edit', $edit, t('Save'));
drupal_static_reset('simplenews_user_is_subscribed');
// Make sure user 4 got removed and users 1..3 are in list.
$this
->assertFalse(simplenews_user_is_subscribed($user_4->mail, $tid), t('User (4) has been deleted.'));
$this
->assertTrue(simplenews_user_is_subscribed($user_1->mail, $tid), t('User (1) has subscribed.'));
$this
->assertTrue(simplenews_user_is_subscribed($user_2->mail, $tid), t('User (2) has subscribed.'));
$this
->assertTrue(simplenews_user_is_subscribed($user_3->mail, $tid), t('User (3) has subscribed.'));
// Also anonymous subscribers need to be removed.
$this
->assertFalse(simplenews_user_is_subscribed($anonymous[0], $tid), t('Anonymous (1) has been deleted.'));
$this
->assertFalse(simplenews_user_is_subscribed($anonymous[1], $tid), t('Anonymous (2) has been deleted.'));
$this
->assertFalse(simplenews_user_is_subscribed($anonymous[2], $tid), t('Anonymous (3) has been deleted.'));
}