Version 1
[yaffs-website] / web / core / modules / user / tests / src / Kernel / Views / HandlerFilterRolesTest.php
1 <?php
2
3 namespace Drupal\Tests\user\Kernel\Views;
4
5 use Drupal\user\Entity\Role;
6 use Drupal\views\Entity\View;
7 use Drupal\views\Views;
8
9 /**
10  * Tests the roles filter handler.
11  *
12  * @group user
13  *
14  * @see \Drupal\user\Plugin\views\filter\Roles
15  */
16 class HandlerFilterRolesTest extends UserKernelTestBase {
17
18   /**
19    * Views used by this test.
20    *
21    * @var array
22    */
23   public static $testViews = ['test_user_name'];
24
25   /**
26    * Tests that role filter dependencies are calculated correctly.
27    */
28   public function testDependencies() {
29     $role = Role::create(['id' => 'test_user_role']);
30     $role->save();
31     $view = View::load('test_user_name');
32     $expected = [
33       'module' => ['user'],
34     ];
35     $this->assertEqual($expected, $view->getDependencies());
36
37     $display = &$view->getDisplay('default');
38     $display['display_options']['filters']['roles_target_id'] = [
39       'id' => 'roles_target_id',
40       'table' => 'user__roles',
41       'field' => 'roles_target_id',
42       'value' => ['test_user_role' => 'test_user_role'],
43       'plugin_id' => 'user_roles',
44     ];
45     $view->save();
46     $expected['config'][] = 'user.role.test_user_role';
47     $this->assertEqual($expected, $view->getDependencies());
48
49     $view = View::load('test_user_name');
50     $display = &$view->getDisplay('default');
51     $display['display_options']['filters']['roles_target_id'] = [
52       'id' => 'roles_target_id',
53       'table' => 'user__roles',
54       'field' => 'roles_target_id',
55       'value' => [
56         'test_user_role' => 'test_user_role',
57       ],
58       'operator' => 'empty',
59       'plugin_id' => 'user_roles',
60     ];
61     $view->save();
62     unset($expected['config']);
63     $this->assertEqual($expected, $view->getDependencies());
64
65     $view = View::load('test_user_name');
66     $display = &$view->getDisplay('default');
67     $display['display_options']['filters']['roles_target_id'] = [
68       'id' => 'roles_target_id',
69       'table' => 'user__roles',
70       'field' => 'roles_target_id',
71       'value' => [
72         'test_user_role' => 'test_user_role',
73       ],
74       'operator' => 'not empty',
75       'plugin_id' => 'user_roles',
76     ];
77     $view->save();
78     $this->assertEqual($expected, $view->getDependencies());
79
80     $view = Views::getView('test_user_name');
81     $view->initDisplay();
82     $view->initHandlers();
83     $this->assertEqual(array_keys($view->filter['roles_target_id']->getValueOptions()), ['test_user_role']);
84
85     $view = View::load('test_user_name');
86     $display = &$view->getDisplay('default');
87     $display['display_options']['filters']['roles_target_id'] = [
88       'id' => 'roles_target_id',
89       'table' => 'user__roles',
90       'field' => 'roles_target_id',
91       'value' => [],
92       'plugin_id' => 'user_roles',
93     ];
94     $view->save();
95     $this->assertEqual($expected, $view->getDependencies());
96   }
97
98 }