3 namespace Drupal\datetime\Tests\Views;
5 use Drupal\views\Views;
8 * Tests the Drupal\datetime\Plugin\views\filter\Date handler.
12 class ArgumentDateTimeTest extends DateTimeHandlerTestBase {
17 public static $testViews = ['test_argument_datetime'];
22 protected function setUp() {
25 // Add some basic test nodes.
31 foreach ($dates as $date) {
32 $this->nodes[] = $this->drupalCreateNode([
43 * @see \Drupal\datetime\Plugin\views\argument\YearDate
45 public function testDatetimeArgumentYear() {
46 $view = Views::getView('test_argument_datetime');
48 // The 'default' display has the 'year' argument.
49 $view->setDisplay('default');
50 $this->executeView($view, ['2000']);
52 $expected[] = ['nid' => $this->nodes[0]->id()];
53 $this->assertIdenticalResultset($view, $expected, $this->map);
56 $view->setDisplay('default');
57 $this->executeView($view, ['2002']);
59 $expected[] = ['nid' => $this->nodes[2]->id()];
60 $this->assertIdenticalResultset($view, $expected, $this->map);
65 * Test month argument.
67 * @see \Drupal\datetime\Plugin\views\argument\MonthDate
69 public function testDatetimeArgumentMonth() {
70 $view = Views::getView('test_argument_datetime');
71 // The 'embed_1' display has the 'month' argument.
72 $view->setDisplay('embed_1');
74 $this->executeView($view, ['10']);
76 $expected[] = ['nid' => $this->nodes[0]->id()];
77 $expected[] = ['nid' => $this->nodes[1]->id()];
78 $this->assertIdenticalResultset($view, $expected, $this->map);
81 $view->setDisplay('embed_1');
82 $this->executeView($view, ['01']);
84 $expected[] = ['nid' => $this->nodes[2]->id()];
85 $this->assertIdenticalResultset($view, $expected, $this->map);
92 * @see \Drupal\datetime\Plugin\views\argument\DayDate
94 public function testDatetimeArgumentDay() {
95 $view = Views::getView('test_argument_datetime');
97 // The 'embed_2' display has the 'day' argument.
98 $view->setDisplay('embed_2');
99 $this->executeView($view, ['10']);
101 $expected[] = ['nid' => $this->nodes[0]->id()];
102 $expected[] = ['nid' => $this->nodes[1]->id()];
103 $this->assertIdenticalResultset($view, $expected, $this->map);
106 $view->setDisplay('embed_2');
107 $this->executeView($view, ['01']);
109 $expected[] = ['nid' => $this->nodes[2]->id()];
110 $this->assertIdenticalResultset($view, $expected, $this->map);
115 * Test year, month, and day arguments combined.
117 public function testDatetimeArgumentAll() {
118 $view = Views::getView('test_argument_datetime');
119 // The 'embed_3' display has year, month, and day arguments.
120 $view->setDisplay('embed_3');
122 $this->executeView($view, ['2000', '10', '10']);
124 $expected[] = ['nid' => $this->nodes[0]->id()];
125 $this->assertIdenticalResultset($view, $expected, $this->map);
128 $view->setDisplay('embed_3');
129 $this->executeView($view, ['2002', '01', '01']);
131 $expected[] = ['nid' => $this->nodes[2]->id()];
132 $this->assertIdenticalResultset($view, $expected, $this->map);
137 * Test week WW argument.
139 public function testDatetimeArgumentWeek() {
140 $view = Views::getView('test_argument_datetime');
141 // The 'embed_4' display has WW argument.
142 $view->setDisplay('embed_4');
144 $this->executeView($view, ['41']);
146 $expected[] = ['nid' => $this->nodes[0]->id()];
147 $expected[] = ['nid' => $this->nodes[1]->id()];
148 $this->assertIdenticalResultset($view, $expected, $this->map);
151 $view->setDisplay('embed_4');
152 $this->executeView($view, ['01']);
154 $expected[] = ['nid' => $this->nodes[2]->id()];
155 $this->assertIdenticalResultset($view, $expected, $this->map);
160 * Test full_date CCYYMMDD argument.
162 public function testDatetimeArgumentFullDate() {
163 $view = Views::getView('test_argument_datetime');
164 // The 'embed_5' display has CCYYMMDD argument.
165 $view->setDisplay('embed_5');
167 $this->executeView($view, ['20001010']);
169 $expected[] = ['nid' => $this->nodes[0]->id()];
170 $this->assertIdenticalResultset($view, $expected, $this->map);
173 $view->setDisplay('embed_5');
174 $this->executeView($view, ['20020101']);
176 $expected[] = ['nid' => $this->nodes[2]->id()];
177 $this->assertIdenticalResultset($view, $expected, $this->map);
182 * Test year_month CCYYMM argument.
184 public function testDatetimeArgumentYearMonth() {
185 $view = Views::getView('test_argument_datetime');
186 // The 'embed_6' display has CCYYMM argument.
187 $view->setDisplay('embed_6');
189 $this->executeView($view, ['200010']);
191 $expected[] = ['nid' => $this->nodes[0]->id()];
192 $this->assertIdenticalResultset($view, $expected, $this->map);
195 $view->setDisplay('embed_6');
196 $this->executeView($view, ['200201']);
198 $expected[] = ['nid' => $this->nodes[2]->id()];
199 $this->assertIdenticalResultset($view, $expected, $this->map);