X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2Fcore%2Fmodules%2Fuser%2Ftests%2Fsrc%2FFunctional%2FViews%2FBulkFormTest.php;fp=web%2Fcore%2Fmodules%2Fuser%2Ftests%2Fsrc%2FFunctional%2FViews%2FBulkFormTest.php;h=29c0e83e6b9da2ea4c1dbef05a7c53c0d473a8ea;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hp=0000000000000000000000000000000000000000;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0;p=yaffs-website diff --git a/web/core/modules/user/tests/src/Functional/Views/BulkFormTest.php b/web/core/modules/user/tests/src/Functional/Views/BulkFormTest.php new file mode 100644 index 000000000..29c0e83e6 --- /dev/null +++ b/web/core/modules/user/tests/src/Functional/Views/BulkFormTest.php @@ -0,0 +1,140 @@ +drupalLogin($this->drupalCreateUser(['administer permissions'])); + $user_storage = $this->container->get('entity.manager')->getStorage('user'); + + // Create an user which actually can change users. + $this->drupalLogin($this->drupalCreateUser(['administer users'])); + $this->drupalGet('test-user-bulk-form'); + $result = $this->cssSelect('#edit-action option'); + $this->assertTrue(count($result) > 0); + + // Test submitting the page with no selection. + $edit = [ + 'action' => 'user_block_user_action', + ]; + $this->drupalPostForm('test-user-bulk-form', $edit, t('Apply to selected items')); + $this->assertText(t('No users selected.')); + + // Assign a role to a user. + $account = $user_storage->load($this->users[0]->id()); + $roles = user_role_names(TRUE); + unset($roles[RoleInterface::AUTHENTICATED_ID]); + $role = key($roles); + + $this->assertFalse($account->hasRole($role), 'The user currently does not have a custom role.'); + $edit = [ + 'user_bulk_form[1]' => TRUE, + 'action' => 'user_add_role_action.' . $role, + ]; + $this->drupalPostForm(NULL, $edit, t('Apply to selected items')); + // Re-load the user and check their roles. + $user_storage->resetCache([$account->id()]); + $account = $user_storage->load($account->id()); + $this->assertTrue($account->hasRole($role), 'The user now has the custom role.'); + + $edit = [ + 'user_bulk_form[1]' => TRUE, + 'action' => 'user_remove_role_action.' . $role, + ]; + $this->drupalPostForm(NULL, $edit, t('Apply to selected items')); + // Re-load the user and check their roles. + $user_storage->resetCache([$account->id()]); + $account = $user_storage->load($account->id()); + $this->assertFalse($account->hasRole($role), 'The user no longer has the custom role.'); + + // Block a user using the bulk form. + $this->assertTrue($account->isActive(), 'The user is not blocked.'); + $this->assertRaw($account->label(), 'The user is found in the table.'); + $edit = [ + 'user_bulk_form[1]' => TRUE, + 'action' => 'user_block_user_action', + ]; + $this->drupalPostForm(NULL, $edit, t('Apply to selected items')); + // Re-load the user and check their status. + $user_storage->resetCache([$account->id()]); + $account = $user_storage->load($account->id()); + $this->assertTrue($account->isBlocked(), 'The user is blocked.'); + $this->assertNoRaw($account->label(), 'The user is not found in the table.'); + + // Remove the user status filter from the view. + $view = Views::getView('test_user_bulk_form'); + $view->removeHandler('default', 'filter', 'status'); + $view->storage->save(); + + // Ensure the anonymous user is found. + $this->drupalGet('test-user-bulk-form'); + $this->assertText($this->config('user.settings')->get('anonymous')); + + // Attempt to block the anonymous user. + $edit = [ + 'user_bulk_form[0]' => TRUE, + 'action' => 'user_block_user_action', + ]; + $this->drupalPostForm(NULL, $edit, t('Apply to selected items')); + $anonymous_account = $user_storage->load(0); + $this->assertTrue($anonymous_account->isBlocked(), 'Ensure the anonymous user got blocked.'); + + // Test the list of available actions with a value that contains a dot. + $this->drupalLogin($this->drupalCreateUser(['administer permissions', 'administer views', 'administer users'])); + $action_id = 'user_add_role_action.' . $role; + $edit = [ + 'options[include_exclude]' => 'exclude', + "options[selected_actions][$action_id]" => $action_id, + ]; + $this->drupalPostForm('admin/structure/views/nojs/handler/test_user_bulk_form/default/field/user_bulk_form', $edit, t('Apply')); + $this->drupalPostForm(NULL, [], t('Save')); + $this->drupalGet('test-user-bulk-form'); + $this->assertNoOption('edit-action', $action_id); + $edit['options[include_exclude]'] = 'include'; + $this->drupalPostForm('admin/structure/views/nojs/handler/test_user_bulk_form/default/field/user_bulk_form', $edit, t('Apply')); + $this->drupalPostForm(NULL, [], t('Save')); + $this->drupalGet('test-user-bulk-form'); + $this->assertOption('edit-action', $action_id); + } + + /** + * Tests the user bulk form with a combined field filter on the bulk column. + */ + public function testBulkFormCombineFilter() { + // Add a user. + User::load($this->users[0]->id()); + $view = Views::getView('test_user_bulk_form_combine_filter'); + $errors = $view->validate(); + $this->assertEqual(reset($errors['default']), t('Field %field set in %filter is not usable for this filter type. Combined field filter only works for simple fields.', ['%field' => 'User: Bulk update', '%filter' => 'Global: Combine fields filter'])); + } + +}