'Sort: date', 'description' => 'Test the core views_handler_sort_date handler.', 'group' => 'Views Handlers', ); } protected function expectedResultSet($granularity, $reverse = TRUE) { $expected = array(); if (!$reverse) { switch ($granularity) { case 'second': $expected = array( array('name' => 'John'), array('name' => 'Paul'), array('name' => 'Meredith'), array('name' => 'Ringo'), array('name' => 'George'), ); break; case 'minute': $expected = array( array('name' => 'John'), array('name' => 'Paul'), array('name' => 'Ringo'), array('name' => 'Meredith'), array('name' => 'George'), ); break; case 'hour': $expected = array( array('name' => 'John'), array('name' => 'Ringo'), array('name' => 'Paul'), array('name' => 'Meredith'), array('name' => 'George'), ); break; case 'day': $expected = array( array('name' => 'John'), array('name' => 'Ringo'), array('name' => 'Paul'), array('name' => 'Meredith'), array('name' => 'George'), ); break; case 'month': $expected = array( array('name' => 'John'), array('name' => 'George'), array('name' => 'Ringo'), array('name' => 'Paul'), array('name' => 'Meredith'), ); break; case 'year': $expected = array( array('name' => 'John'), array('name' => 'George'), array('name' => 'Ringo'), array('name' => 'Paul'), array('name' => 'Meredith'), ); break; } } else { switch ($granularity) { case 'second': $expected = array( array('name' => 'George'), array('name' => 'Ringo'), array('name' => 'Meredith'), array('name' => 'Paul'), array('name' => 'John'), ); break; case 'minute': $expected = array( array('name' => 'George'), array('name' => 'Ringo'), array('name' => 'Meredith'), array('name' => 'Paul'), array('name' => 'John'), ); break; case 'hour': $expected = array( array('name' => 'George'), array('name' => 'Ringo'), array('name' => 'Paul'), array('name' => 'Meredith'), array('name' => 'John'), ); break; case 'day': $expected = array( array('name' => 'George'), array('name' => 'John'), array('name' => 'Ringo'), array('name' => 'Paul'), array('name' => 'Meredith'), ); break; case 'month': $expected = array( array('name' => 'John'), array('name' => 'George'), array('name' => 'Ringo'), array('name' => 'Paul'), array('name' => 'Meredith'), ); break; case 'year': $expected = array( array('name' => 'John'), array('name' => 'George'), array('name' => 'Ringo'), array('name' => 'Paul'), array('name' => 'Meredith'), ); break; } } return $expected; } /** * Tests numeric ordering of the result set. */ public function testDateOrdering() { foreach (array('second', 'minute', 'hour', 'day', 'month', 'year') as $granularity) { foreach (array(FALSE, TRUE) as $reverse) { $view = $this->getBasicView(); // Change the fields. $view->display['default']->handler->override_option('fields', array( 'name' => array( 'id' => 'name', 'table' => 'views_test', 'field' => 'name', 'relationship' => 'none', ), 'created' => array( 'id' => 'created', 'table' => 'views_test', 'field' => 'created', 'relationship' => 'none', ), )); // Change the ordering. $view->display['default']->handler->override_option('sorts', array( 'created' => array( 'id' => 'created', 'table' => 'views_test', 'field' => 'created', 'relationship' => 'none', 'granularity' => $granularity, 'order' => $reverse ? 'DESC' : 'ASC', ), 'id' => array( 'id' => 'id', 'table' => 'views_test', 'field' => 'id', 'relationship' => 'none', 'order' => 'ASC', ), )); // Execute the view. $this->executeView($view); // Verify the result. $this->assertEqual(count($this->dataSet()), count($view->result), t('The number of returned rows match.')); $this->assertIdenticalResultset($view, $this->expectedResultSet($granularity, $reverse), array( 'views_test_name' => 'name', ), t('Result is returned correctly when ordering by granularity @granularity, @reverse.', array('@granularity' => $granularity, '@reverse' => $reverse ? t('reverse') : t('forward')))); $view->destroy(); unset($view); } } } }