3 namespace Drupal\Tests\views\Kernel\Handler;
5 use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
6 use Drupal\views\Views;
9 * Tests the core date argument handlers.
12 * @see \Drupal\views\Plugin\views\argument\Date
14 class ArgumentDateTest extends ViewsKernelTestBase {
17 * Views used by this test.
21 public static $testViews = ['test_argument_date'];
24 * Stores the column map for this testCase.
28 protected $columnMap = [
35 public function viewsData() {
36 $data = parent::viewsData();
46 foreach ($date_plugins as $plugin_id) {
47 $data['views_test_data'][$plugin_id] = $data['views_test_data']['created'];
48 $data['views_test_data'][$plugin_id]['real field'] = 'created';
49 $data['views_test_data'][$plugin_id]['argument']['id'] = $plugin_id;
55 * Tests the CreatedFullDate handler.
57 * @see \Drupal\node\Plugin\views\argument\CreatedFullDate
59 public function testCreatedFullDateHandler() {
60 $view = Views::getView('test_argument_date');
61 $view->setDisplay('default');
62 $this->executeView($view, ['20000102']);
64 $expected[] = ['id' => 2];
65 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
68 $view->setDisplay('default');
69 $this->executeView($view, ['20000101']);
71 $expected[] = ['id' => 1];
72 $expected[] = ['id' => 3];
73 $expected[] = ['id' => 4];
74 $expected[] = ['id' => 5];
75 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
78 $view->setDisplay('default');
79 $this->executeView($view, ['20001023']);
81 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
86 * Tests the Day handler.
88 * @see \Drupal\node\Plugin\views\argument\CreatedDay
90 public function testDayHandler() {
91 $view = Views::getView('test_argument_date');
92 $view->setDisplay('embed_1');
93 $this->executeView($view, ['02']);
95 $expected[] = ['id' => 2];
96 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
99 $view->setDisplay('embed_1');
100 $this->executeView($view, ['01']);
102 $expected[] = ['id' => 1];
103 $expected[] = ['id' => 3];
104 $expected[] = ['id' => 4];
105 $expected[] = ['id' => 5];
106 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
109 $view->setDisplay('embed_1');
110 $this->executeView($view, ['23']);
112 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
116 * Tests the Month handler.
118 * @see \Drupal\node\Plugin\views\argument\CreatedMonth
120 public function testMonthHandler() {
121 $view = Views::getView('test_argument_date');
122 $view->setDisplay('embed_2');
123 $this->executeView($view, ['01']);
125 $expected[] = ['id' => 1];
126 $expected[] = ['id' => 2];
127 $expected[] = ['id' => 3];
128 $expected[] = ['id' => 4];
129 $expected[] = ['id' => 5];
130 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
133 $view->setDisplay('embed_2');
134 $this->executeView($view, ['12']);
136 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
140 * Tests the Week handler.
142 * @see \Drupal\node\Plugin\views\argument\CreatedWeek
144 public function testWeekHandler() {
145 $this->container->get('database')->update('views_test_data')
146 ->fields(['created' => gmmktime(0, 0, 0, 9, 26, 2008)])
150 $this->container->get('database')->update('views_test_data')
151 ->fields(['created' => gmmktime(0, 0, 0, 2, 29, 2004)])
155 $this->container->get('database')->update('views_test_data')
156 ->fields(['created' => gmmktime(0, 0, 0, 1, 1, 2000)])
160 $this->container->get('database')->update('views_test_data')
161 ->fields(['created' => gmmktime(0, 0, 0, 1, 10, 2000)])
165 $this->container->get('database')->update('views_test_data')
166 ->fields(['created' => gmmktime(0, 0, 0, 2, 1, 2000)])
170 $view = Views::getView('test_argument_date');
171 $view->setDisplay('embed_3');
172 // Check the week calculation for a leap year.
173 // @see http://wikipedia.org/wiki/ISO_week_date#Calculation
174 $this->executeView($view, ['39']);
176 $expected[] = ['id' => 1];
177 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
180 $view->setDisplay('embed_3');
181 // Check the week calculation for the 29th of February in a leap year.
182 // @see http://wikipedia.org/wiki/ISO_week_date#Calculation
183 $this->executeView($view, ['09']);
185 $expected[] = ['id' => 2];
186 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
189 $view->setDisplay('embed_3');
190 // The first jan 2000 was still in the last week of the previous year.
191 $this->executeView($view, ['52']);
193 $expected[] = ['id' => 3];
194 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
197 $view->setDisplay('embed_3');
198 $this->executeView($view, ['02']);
200 $expected[] = ['id' => 4];
201 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
204 $view->setDisplay('embed_3');
205 $this->executeView($view, ['05']);
207 $expected[] = ['id' => 5];
208 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
211 $view->setDisplay('embed_3');
212 $this->executeView($view, ['23']);
214 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
218 * Tests the Year handler.
220 * @see \Drupal\node\Plugin\views\argument\CreatedYear
222 public function testYearHandler() {
223 $this->container->get('database')->update('views_test_data')
224 ->fields(['created' => gmmktime(0, 0, 0, 1, 1, 2001)])
228 $this->container->get('database')->update('views_test_data')
229 ->fields(['created' => gmmktime(0, 0, 0, 1, 1, 2002)])
233 $this->container->get('database')->update('views_test_data')
234 ->fields(['created' => gmmktime(0, 0, 0, 1, 1, 2002)])
238 $view = Views::getView('test_argument_date');
239 $view->setDisplay('embed_4');
240 $this->executeView($view, ['2000']);
242 $expected[] = ['id' => 1];
243 $expected[] = ['id' => 2];
244 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
247 $view->setDisplay('embed_4');
248 $this->executeView($view, ['2001']);
250 $expected[] = ['id' => 3];
251 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
254 $view->setDisplay('embed_4');
255 $this->executeView($view, ['2002']);
257 $expected[] = ['id' => 4];
258 $expected[] = ['id' => 5];
259 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
262 $view->setDisplay('embed_4');
263 $this->executeView($view, ['23']);
265 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
269 * Tests the YearMonth handler.
271 * @see \Drupal\node\Plugin\views\argument\CreatedYearMonth
273 public function testYearMonthHandler() {
274 $this->container->get('database')->update('views_test_data')
275 ->fields(['created' => gmmktime(0, 0, 0, 1, 1, 2001)])
279 $this->container->get('database')->update('views_test_data')
280 ->fields(['created' => gmmktime(0, 0, 0, 4, 1, 2001)])
284 $this->container->get('database')->update('views_test_data')
285 ->fields(['created' => gmmktime(0, 0, 0, 4, 1, 2001)])
289 $view = Views::getView('test_argument_date');
290 $view->setDisplay('embed_5');
291 $this->executeView($view, ['200001']);
293 $expected[] = ['id' => 1];
294 $expected[] = ['id' => 2];
295 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
298 $view->setDisplay('embed_5');
299 $this->executeView($view, ['200101']);
301 $expected[] = ['id' => 3];
302 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
305 $view->setDisplay('embed_5');
306 $this->executeView($view, ['200104']);
308 $expected[] = ['id' => 4];
309 $expected[] = ['id' => 5];
310 $this->assertIdenticalResultset($view, $expected, $this->columnMap);
313 $view->setDisplay('embed_5');
314 $this->executeView($view, ['201301']);
316 $this->assertIdenticalResultset($view, $expected, $this->columnMap);