Further Drupal 8.6.4 changes. Some core files were not committed before a commit...
[yaffs-website] / web / core / modules / views / tests / src / Kernel / Handler / FilterEqualityTest.php
1 <?php
2
3 namespace Drupal\Tests\views\Kernel\Handler;
4
5 use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
6 use Drupal\views\Views;
7
8 /**
9  * Tests the core Drupal\views\Plugin\views\filter\Equality handler.
10  *
11  * @group views
12  */
13 class FilterEqualityTest extends ViewsKernelTestBase {
14
15   public static $modules = ['system'];
16
17   /**
18    * Views used by this test.
19    *
20    * @var array
21    */
22   public static $testViews = ['test_view'];
23
24   /**
25    * Map column names.
26    *
27    * @var array
28    */
29   protected $columnMap = [
30     'views_test_data_name' => 'name',
31   ];
32
33   public function viewsData() {
34     $data = parent::viewsData();
35     $data['views_test_data']['name']['filter']['id'] = 'equality';
36     return $data;
37   }
38
39   public function testEqual() {
40     $view = Views::getView('test_view');
41     $view->setDisplay();
42
43     // Change the filtering
44     $view->displayHandlers->get('default')->overrideOption('filters', [
45       'name' => [
46         'id' => 'name',
47         'table' => 'views_test_data',
48         'field' => 'name',
49         'relationship' => 'none',
50         'operator' => '=',
51         'value' => 'Ringo',
52       ],
53     ]);
54
55     $this->executeView($view);
56     $resultset = [
57       [
58         'name' => 'Ringo',
59       ],
60     ];
61     $this->assertIdenticalResultset($view, $resultset, $this->columnMap);
62   }
63
64   public function testEqualGroupedExposed() {
65     $filters = $this->getGroupedExposedFilters();
66     $view = Views::getView('test_view');
67     $view->newDisplay('page', 'Page', 'page_1');
68
69     // Filter: Name, Operator: =, Value: Ringo
70     $filters['name']['group_info']['default_group'] = 1;
71     $view->setDisplay('page_1');
72     $view->displayHandlers->get('page_1')->overrideOption('filters', $filters);
73     $view->save();
74     $this->container->get('router.builder')->rebuild();
75
76     $this->executeView($view);
77     $resultset = [
78       [
79         'name' => 'Ringo',
80       ],
81     ];
82     $this->assertIdenticalResultset($view, $resultset, $this->columnMap);
83   }
84
85   public function testNotEqual() {
86     $view = Views::getView('test_view');
87     $view->setDisplay();
88
89     // Change the filtering
90     $view->displayHandlers->get('default')->overrideOption('filters', [
91       'name' => [
92         'id' => 'name',
93         'table' => 'views_test_data',
94         'field' => 'name',
95         'relationship' => 'none',
96         'operator' => '!=',
97         'value' => 'Ringo',
98       ],
99     ]);
100
101     $this->executeView($view);
102     $resultset = [
103       [
104         'name' => 'John',
105       ],
106       [
107         'name' => 'George',
108       ],
109       [
110         'name' => 'Paul',
111       ],
112       [
113         'name' => 'Meredith',
114       ],
115     ];
116     $this->assertIdenticalResultset($view, $resultset, $this->columnMap);
117   }
118
119   public function testEqualGroupedNotExposed() {
120     $filters = $this->getGroupedExposedFilters();
121     $view = Views::getView('test_view');
122     $view->newDisplay('page', 'Page', 'page_1');
123
124     // Filter: Name, Operator: !=, Value: Ringo
125     $filters['name']['group_info']['default_group'] = 2;
126     $view->setDisplay('page_1');
127     $view->displayHandlers->get('page_1')->overrideOption('filters', $filters);
128     $view->save();
129     $this->container->get('router.builder')->rebuild();
130
131     $this->executeView($view);
132     $resultset = [
133       [
134         'name' => 'John',
135       ],
136       [
137         'name' => 'George',
138       ],
139       [
140         'name' => 'Paul',
141       ],
142       [
143         'name' => 'Meredith',
144       ],
145     ];
146     $this->assertIdenticalResultset($view, $resultset, $this->columnMap);
147   }
148
149   protected function getGroupedExposedFilters() {
150     $filters = [
151       'name' => [
152         'id' => 'name',
153         'plugin_id' => 'equality',
154         'table' => 'views_test_data',
155         'field' => 'name',
156         'relationship' => 'none',
157         'group' => 1,
158         'exposed' => TRUE,
159         'expose' => [
160           'operator' => 'name_op',
161           'label' => 'name',
162           'identifier' => 'name',
163         ],
164         'is_grouped' => TRUE,
165         'group_info' => [
166           'label' => 'name',
167           'identifier' => 'name',
168           'default_group' => 'All',
169           'group_items' => [
170             1 => [
171               'title' => 'Name is equal to Ringo',
172               'operator' => '=',
173               'value' => 'Ringo',
174             ],
175             2 => [
176               'title' => 'Name is not equal to Ringo',
177               'operator' => '!=',
178               'value' => 'Ringo',
179             ],
180           ],
181         ],
182       ],
183     ];
184     return $filters;
185   }
186
187 }