+++ /dev/null
-<?php
-
-namespace Drupal\user\Tests\Views;
-
-use Drupal\views\Views;
-use Drupal\views\Tests\ViewTestBase;
-use Drupal\views\Tests\ViewTestData;
-
-/**
- * Tests the handler of the user: name filter.
- *
- * @group user
- * @see Views\user\Plugin\views\filter\Name
- */
-class HandlerFilterUserNameTest extends ViewTestBase {
-
- /**
- * Modules to enable.
- *
- * @var array
- */
- public static $modules = ['views_ui', 'user_test_views'];
-
- /**
- * Views used by this test.
- *
- * @var array
- */
- public static $testViews = ['test_user_name'];
-
- /**
- * Accounts used by this test.
- *
- * @var array
- */
- protected $accounts = [];
-
- /**
- * Usernames of $accounts.
- *
- * @var array
- */
- protected $names = [];
-
- /**
- * Stores the column map for this testCase.
- *
- * @var array
- */
- public $columnMap = [
- 'uid' => 'uid',
- ];
-
- protected function setUp() {
- parent::setUp();
-
- ViewTestData::createTestViews(get_class($this), ['user_test_views']);
-
- $this->enableViewsTestModule();
-
- $this->accounts = [];
- $this->names = [];
- for ($i = 0; $i < 3; $i++) {
- $this->accounts[] = $account = $this->drupalCreateUser();
- $this->names[] = $account->label();
- }
- }
-
-
- /**
- * Tests just using the filter.
- */
- public function testUserNameApi() {
- $view = Views::getView('test_user_name');
-
- $view->initHandlers();
- $view->filter['uid']->value = [$this->accounts[0]->id()];
-
- $this->executeView($view);
- $this->assertIdenticalResultset($view, [['uid' => $this->accounts[0]->id()]], $this->columnMap);
-
- $this->assertEqual($view->filter['uid']->getValueOptions(), NULL);
- }
-
- /**
- * Tests using the user interface.
- */
- public function testAdminUserInterface() {
- $admin_user = $this->drupalCreateUser(['administer views', 'administer site configuration']);
- $this->drupalLogin($admin_user);
-
- $path = 'admin/structure/views/nojs/handler/test_user_name/default/filter/uid';
- $this->drupalGet($path);
-
- // Pass in an invalid username, the validation should catch it.
- $users = [$this->randomMachineName()];
- $users = array_map('strtolower', $users);
- $edit = [
- 'options[value]' => implode(', ', $users)
- ];
- $this->drupalPostForm($path, $edit, t('Apply'));
- $this->assertRaw(t('There are no entities matching "%value".', ['%value' => implode(', ', $users)]));
-
- // Pass in an invalid username and a valid username.
- $random_name = $this->randomMachineName();
- $users = [$random_name, $this->names[0]];
- $users = array_map('strtolower', $users);
- $edit = [
- 'options[value]' => implode(', ', $users)
- ];
- $users = [$users[0]];
- $this->drupalPostForm($path, $edit, t('Apply'));
- $this->assertRaw(t('There are no entities matching "%value".', ['%value' => implode(', ', $users)]));
-
- // Pass in just valid usernames.
- $users = $this->names;
- $users = array_map('strtolower', $users);
- $edit = [
- 'options[value]' => implode(', ', $users)
- ];
- $this->drupalPostForm($path, $edit, t('Apply'));
- $this->assertNoRaw(t('There are no entities matching "%value".', ['%value' => implode(', ', $users)]));
- }
-
- /**
- * Tests exposed filters.
- */
- public function testExposedFilter() {
- $path = 'test_user_name';
-
- $options = [];
-
- // Pass in an invalid username, the validation should catch it.
- $users = [$this->randomMachineName()];
- $users = array_map('strtolower', $users);
- $options['query']['uid'] = implode(', ', $users);
- $this->drupalGet($path, $options);
- $this->assertRaw(t('There are no entities matching "%value".', ['%value' => implode(', ', $users)]));
-
- // Pass in an invalid target_id in for the entity_autocomplete value format.
- // There should be no errors, but all results should be returned as the
- // default value for the autocomplete will not match any users so should
- // be empty.
- $options['query']['uid'] = [['target_id' => 9999]];
- $this->drupalGet($path, $options);
- // The actual result should contain all of the user ids.
- foreach ($this->accounts as $account) {
- $this->assertRaw($account->id());
- }
-
- // Pass in an invalid username and a valid username.
- $users = [$this->randomMachineName(), $this->names[0]];
- $users = array_map('strtolower', $users);
- $options['query']['uid'] = implode(', ', $users);
- $users = [$users[0]];
-
- $this->drupalGet($path, $options);
- $this->assertRaw(t('There are no entities matching "%value".', ['%value' => implode(', ', $users)]));
-
- // Pass in just valid usernames.
- $users = $this->names;
- $options['query']['uid'] = implode(', ', $users);
-
- $this->drupalGet($path, $options);
- $this->assertNoRaw('Unable to find user');
- // The actual result should contain all of the user ids.
- foreach ($this->accounts as $account) {
- $this->assertRaw($account->id());
- }
-
- // Pass in just valid user IDs in the entity_autocomplete target_id format.
- $options['query']['uid'] = array_map(function ($account) {
- return ['target_id' => $account->id()];
- }, $this->accounts);
-
- $this->drupalGet($path, $options);
- $this->assertNoRaw('Unable to find user');
- // The actual result should contain all of the user ids.
- foreach ($this->accounts as $account) {
- $this->assertRaw($account->id());
- }
- }
-
-}