3 namespace Drupal\Tests\datetime\Kernel\Views;
5 use Drupal\node\Entity\Node;
6 use Drupal\views\Views;
9 * Tests the Drupal\datetime\Plugin\views\filter\Date handler.
13 class ArgumentDateTimeTest extends DateTimeHandlerTestBase {
18 public static $testViews = ['test_argument_datetime'];
23 protected function setUp($import_test_views = TRUE) {
24 parent::setUp($import_test_views);
26 // Add some basic test nodes.
32 foreach ($dates as $date) {
33 $node = Node::create([
34 'title' => $this->randomMachineName(8),
41 $this->nodes[] = $node;
48 * @see \Drupal\datetime\Plugin\views\argument\YearDate
50 public function testDatetimeArgumentYear() {
51 $view = Views::getView('test_argument_datetime');
53 // The 'default' display has the 'year' argument.
54 $view->setDisplay('default');
55 $this->executeView($view, ['2000']);
57 $expected[] = ['nid' => $this->nodes[0]->id()];
58 $this->assertIdenticalResultset($view, $expected, $this->map);
61 $view->setDisplay('default');
62 $this->executeView($view, ['2002']);
64 $expected[] = ['nid' => $this->nodes[2]->id()];
65 $this->assertIdenticalResultset($view, $expected, $this->map);
70 * Test month argument.
72 * @see \Drupal\datetime\Plugin\views\argument\MonthDate
74 public function testDatetimeArgumentMonth() {
75 $view = Views::getView('test_argument_datetime');
76 // The 'embed_1' display has the 'month' argument.
77 $view->setDisplay('embed_1');
79 $this->executeView($view, ['10']);
81 $expected[] = ['nid' => $this->nodes[0]->id()];
82 $expected[] = ['nid' => $this->nodes[1]->id()];
83 $this->assertIdenticalResultset($view, $expected, $this->map);
86 $view->setDisplay('embed_1');
87 $this->executeView($view, ['01']);
89 $expected[] = ['nid' => $this->nodes[2]->id()];
90 $this->assertIdenticalResultset($view, $expected, $this->map);
97 * @see \Drupal\datetime\Plugin\views\argument\DayDate
99 public function testDatetimeArgumentDay() {
100 $view = Views::getView('test_argument_datetime');
102 // The 'embed_2' display has the 'day' argument.
103 $view->setDisplay('embed_2');
104 $this->executeView($view, ['10']);
106 $expected[] = ['nid' => $this->nodes[0]->id()];
107 $expected[] = ['nid' => $this->nodes[1]->id()];
108 $this->assertIdenticalResultset($view, $expected, $this->map);
111 $view->setDisplay('embed_2');
112 $this->executeView($view, ['01']);
114 $expected[] = ['nid' => $this->nodes[2]->id()];
115 $this->assertIdenticalResultset($view, $expected, $this->map);
120 * Test year, month, and day arguments combined.
122 public function testDatetimeArgumentAll() {
123 $view = Views::getView('test_argument_datetime');
124 // The 'embed_3' display has year, month, and day arguments.
125 $view->setDisplay('embed_3');
127 $this->executeView($view, ['2000', '10', '10']);
129 $expected[] = ['nid' => $this->nodes[0]->id()];
130 $this->assertIdenticalResultset($view, $expected, $this->map);
133 $view->setDisplay('embed_3');
134 $this->executeView($view, ['2002', '01', '01']);
136 $expected[] = ['nid' => $this->nodes[2]->id()];
137 $this->assertIdenticalResultset($view, $expected, $this->map);
142 * Test week WW argument.
144 public function testDatetimeArgumentWeek() {
145 $view = Views::getView('test_argument_datetime');
146 // The 'embed_4' display has WW argument.
147 $view->setDisplay('embed_4');
149 $this->executeView($view, ['41']);
151 $expected[] = ['nid' => $this->nodes[0]->id()];
152 $expected[] = ['nid' => $this->nodes[1]->id()];
153 $this->assertIdenticalResultset($view, $expected, $this->map);
156 $view->setDisplay('embed_4');
157 $this->executeView($view, ['01']);
159 $expected[] = ['nid' => $this->nodes[2]->id()];
160 $this->assertIdenticalResultset($view, $expected, $this->map);
165 * Test full_date CCYYMMDD argument.
167 public function testDatetimeArgumentFullDate() {
168 $view = Views::getView('test_argument_datetime');
169 // The 'embed_5' display has CCYYMMDD argument.
170 $view->setDisplay('embed_5');
172 $this->executeView($view, ['20001010']);
174 $expected[] = ['nid' => $this->nodes[0]->id()];
175 $this->assertIdenticalResultset($view, $expected, $this->map);
178 $view->setDisplay('embed_5');
179 $this->executeView($view, ['20020101']);
181 $expected[] = ['nid' => $this->nodes[2]->id()];
182 $this->assertIdenticalResultset($view, $expected, $this->map);
187 * Test year_month CCYYMM argument.
189 public function testDatetimeArgumentYearMonth() {
190 $view = Views::getView('test_argument_datetime');
191 // The 'embed_6' display has CCYYMM argument.
192 $view->setDisplay('embed_6');
194 $this->executeView($view, ['200010']);
196 $expected[] = ['nid' => $this->nodes[0]->id()];
197 $this->assertIdenticalResultset($view, $expected, $this->map);
200 $view->setDisplay('embed_6');
201 $this->executeView($view, ['200201']);
203 $expected[] = ['nid' => $this->nodes[2]->id()];
204 $this->assertIdenticalResultset($view, $expected, $this->map);