3 namespace Drupal\Tests\user\Kernel\Views;
5 use Drupal\views\Views;
6 use Drupal\Core\Session\AnonymousUserSession;
9 * Tests the current user filter handler.
12 * @see \Drupal\user\Plugin\views\filter\Current
14 class HandlerFilterCurrentUserTest extends UserKernelTestBase {
17 * Views used by this test.
21 public static $testViews = ['test_filter_current_user'];
26 * @var \Drupal\Core\Session\AccountProxy
28 protected $currentUser;
33 protected function setUp($import_test_views = TRUE) {
35 $this->currentUser = $this->container->get('current_user');
36 $this->setupPermissionTestData();
40 * Tests the current user filter handler with anonymous user.
42 public function testFilterCurrentUserAsAnonymous() {
43 $column_map = ['uid' => 'uid'];
44 $this->currentUser->setAccount(new AnonymousUserSession());
46 $view = Views::getView('test_filter_current_user');
47 $view->initHandlers();
48 $view->filter['uid_current']->value = 0;
49 $this->executeView($view);
50 $expected[] = ['uid' => 1];
51 $expected[] = ['uid' => 2];
52 $expected[] = ['uid' => 3];
53 $expected[] = ['uid' => 4];
54 $this->assertIdenticalResultset($view, $expected, $column_map, 'Anonymous account can view all accounts when current filter is FALSE.');
57 $view = Views::getView('test_filter_current_user');
58 $view->initHandlers();
59 $view->filter['uid_current']->value = 1;
60 $this->executeView($view);
62 $this->assertIdenticalResultset($view, $expected, $column_map, 'Anonymous account can view zero accounts when current filter is TRUE.');
67 * Tests the current user filter handler with logged-in user.
69 public function testFilterCurrentUserAsUser() {
70 $column_map = ['uid' => 'uid'];
71 $user = reset($this->users);
72 $this->currentUser->setAccount($user);
74 $view = Views::getView('test_filter_current_user');
75 $view->initHandlers();
76 $view->filter['uid_current']->value = 0;
77 $this->executeView($view);
79 $expected[] = ['uid' => 2];
80 $expected[] = ['uid' => 3];
81 $expected[] = ['uid' => 4];
82 $this->assertIdenticalResultset($view, $expected, $column_map, 'User can view all users except itself when current filter is FALSE.');
85 $view = Views::getView('test_filter_current_user');
86 $view->initHandlers();
87 $view->filter['uid_current']->value = 1;
88 $this->executeView($view);
90 $expected[] = ['uid' => 1];
91 $this->assertIdenticalResultset($view, $expected, $column_map, 'User can only view itself when current filter is TRUE.');