+++ /dev/null
-<?php
-
-namespace Drupal\datetime\Tests\Views;
-
-use Drupal\views\Views;
-
-/**
- * Tests for core Drupal\datetime\Plugin\views\sort\Date handler.
- *
- * @group datetime
- */
-class SortDateTimeTest extends DateTimeHandlerTestBase {
-
- /**
- * {@inheritdoc}
- */
- public static $testViews = ['test_sort_datetime'];
-
- /**
- * {@inheritdoc}
- */
- protected function setUp() {
- parent::setUp();
-
- // Add some basic test nodes.
- $dates = [
- '2014-10-10T00:03:00',
- '2000-10-10T00:01:00',
- '2000-10-10T00:02:00',
- '2000-10-10T00:03:00',
- '2000-10-10T00:03:02',
- '2000-10-10T00:03:01',
- '2000-10-10T00:03:03',
- ];
- foreach ($dates as $date) {
- $this->nodes[] = $this->drupalCreateNode([
- 'field_date' => [
- 'value' => $date,
- ]
- ]);
- }
- }
-
- /**
- * 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();
- }
-
-}