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 / FilterInOperatorTest.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\InOperator handler.
10  *
11  * @group views
12  */
13 class FilterInOperatorTest 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     'views_test_data_age' => 'age',
32   ];
33
34   public function viewsData() {
35     $data = parent::viewsData();
36     $data['views_test_data']['age']['filter']['id'] = 'in_operator';
37     return $data;
38   }
39
40   public function testFilterInOperatorSimple() {
41     $view = Views::getView('test_view');
42     $view->setDisplay();
43
44     // Add a in_operator ordering.
45     $view->displayHandlers->get('default')->overrideOption('filters', [
46       'age' => [
47         'id' => 'age',
48         'field' => 'age',
49         'table' => 'views_test_data',
50         'value' => [26, 30],
51         'operator' => 'in',
52       ],
53     ]);
54
55     $this->executeView($view);
56
57     $expected_result = [
58       [
59         'name' => 'Paul',
60         'age' => 26,
61       ],
62       [
63         'name' => 'Meredith',
64         'age' => 30,
65       ],
66     ];
67
68     $this->assertEqual(2, count($view->result));
69     $this->assertIdenticalResultset($view, $expected_result, $this->columnMap);
70
71     $view->destroy();
72     $view->setDisplay();
73
74     // Add a in_operator ordering.
75     $view->displayHandlers->get('default')->overrideOption('filters', [
76       'age' => [
77         'id' => 'age',
78         'field' => 'age',
79         'table' => 'views_test_data',
80         'value' => [26, 30],
81         'operator' => 'not in',
82       ],
83     ]);
84
85     $this->executeView($view);
86
87     $expected_result = [
88       [
89         'name' => 'John',
90         'age' => 25,
91       ],
92       [
93         'name' => 'George',
94         'age' => 27,
95       ],
96       [
97         'name' => 'Ringo',
98         'age' => 28,
99       ],
100     ];
101
102     $this->assertEqual(3, count($view->result));
103     $this->assertIdenticalResultset($view, $expected_result, $this->columnMap);
104   }
105
106   public function testFilterInOperatorGroupedExposedSimple() {
107     $filters = $this->getGroupedExposedFilters();
108     $view = Views::getView('test_view');
109
110     // Filter: Age, Operator: in, Value: 26, 30
111     $filters['age']['group_info']['default_group'] = 1;
112     $view->setDisplay();
113     $view->displayHandlers->get('default')->overrideOption('filters', $filters);
114
115     $this->executeView($view);
116
117     $expected_result = [
118       [
119         'name' => 'Paul',
120         'age' => 26,
121       ],
122       [
123         'name' => 'Meredith',
124         'age' => 30,
125       ],
126     ];
127
128     $this->assertEqual(2, count($view->result));
129     $this->assertIdenticalResultset($view, $expected_result, $this->columnMap);
130   }
131
132   public function testFilterNotInOperatorGroupedExposedSimple() {
133     $filters = $this->getGroupedExposedFilters();
134     $view = Views::getView('test_view');
135
136     // Filter: Age, Operator: in, Value: 26, 30
137     $filters['age']['group_info']['default_group'] = 2;
138     $view->setDisplay();
139     $view->displayHandlers->get('default')->overrideOption('filters', $filters);
140
141     $this->executeView($view);
142
143     $expected_result = [
144       [
145         'name' => 'John',
146         'age' => 25,
147       ],
148       [
149         'name' => 'George',
150         'age' => 27,
151       ],
152       [
153         'name' => 'Ringo',
154         'age' => 28,
155       ],
156     ];
157
158     $this->assertEqual(3, count($view->result));
159     $this->assertIdenticalResultset($view, $expected_result, $this->columnMap);
160   }
161
162   protected function getGroupedExposedFilters() {
163     $filters = [
164       'age' => [
165         'id' => 'age',
166         'table' => 'views_test_data',
167         'field' => 'age',
168         'relationship' => 'none',
169         'exposed' => TRUE,
170         'expose' => [
171           'operator' => 'age_op',
172           'label' => 'age',
173           'identifier' => 'age',
174         ],
175         'is_grouped' => TRUE,
176         'group_info' => [
177           'label' => 'age',
178           'identifier' => 'age',
179           'default_group' => 'All',
180           'group_items' => [
181             1 => [
182               'title' => 'Age is one of 26, 30',
183               'operator' => 'in',
184               'value' => [26, 30],
185             ],
186             2 => [
187               'title' => 'Age is not one of 26, 30',
188               'operator' => 'not in',
189               'value' => [26, 30],
190             ],
191           ],
192         ],
193       ],
194     ];
195     return $filters;
196   }
197
198 }