$this->randomMachineName(8), 'type' => 'page', 'field_date' => [ 'value' => $date, ], ]); $node->save(); $this->nodes[] = $node; } } /** * Tests the datetime sort handler. */ public function testDateTimeSort() { $field = static::$field_name . '_value'; $view = Views::getView('test_sort_datetime'); // Set granularity to 'minute', and the secondary node ID order should // define the order of nodes with the same minute. $view->initHandlers(); $view->sort[$field]->options['granularity'] = 'minute'; $view->setDisplay('default'); $this->executeView($view); $expected_result = [ ['nid' => $this->nodes[0]->id()], ['nid' => $this->nodes[3]->id()], ['nid' => $this->nodes[4]->id()], ['nid' => $this->nodes[5]->id()], ['nid' => $this->nodes[6]->id()], ['nid' => $this->nodes[2]->id()], ['nid' => $this->nodes[1]->id()], ]; $this->assertIdenticalResultset($view, $expected_result, $this->map); $view->destroy(); // Check ASC. $view->initHandlers(); $field = static::$field_name . '_value'; $view->sort[$field]->options['order'] = 'ASC'; $view->setDisplay('default'); $this->executeView($view); $expected_result = [ ['nid' => $this->nodes[1]->id()], ['nid' => $this->nodes[2]->id()], ['nid' => $this->nodes[3]->id()], ['nid' => $this->nodes[5]->id()], ['nid' => $this->nodes[4]->id()], ['nid' => $this->nodes[6]->id()], ['nid' => $this->nodes[0]->id()], ]; $this->assertIdenticalResultset($view, $expected_result, $this->map); $view->destroy(); // Change granularity to 'year', and the secondary node ID order should // define the order of nodes with the same year. $view->initHandlers(); $view->sort[$field]->options['granularity'] = 'year'; $view->sort[$field]->options['order'] = 'DESC'; $view->setDisplay('default'); $this->executeView($view); $expected_result = [ ['nid' => $this->nodes[0]->id()], ['nid' => $this->nodes[1]->id()], ['nid' => $this->nodes[2]->id()], ['nid' => $this->nodes[3]->id()], ['nid' => $this->nodes[4]->id()], ['nid' => $this->nodes[5]->id()], ['nid' => $this->nodes[6]->id()], ]; $this->assertIdenticalResultset($view, $expected_result, $this->map); $view->destroy(); // Change granularity to 'second'. $view->initHandlers(); $view->sort[$field]->options['granularity'] = 'second'; $view->sort[$field]->options['order'] = 'DESC'; $view->setDisplay('default'); $this->executeView($view); $expected_result = [ ['nid' => $this->nodes[0]->id()], ['nid' => $this->nodes[6]->id()], ['nid' => $this->nodes[4]->id()], ['nid' => $this->nodes[5]->id()], ['nid' => $this->nodes[3]->id()], ['nid' => $this->nodes[2]->id()], ['nid' => $this->nodes[1]->id()], ]; $this->assertIdenticalResultset($view, $expected_result, $this->map); $view->destroy(); } }