Commit eca2c2f7 authored by webchick's avatar webchick

Issue #1934558 by dawehner, olli: Create a test for views date handlers.

parent e5e22caa
......@@ -8,6 +8,7 @@
namespace Drupal\views\Plugin\views\argument;
use Drupal\Component\Annotation\Plugin;
use Drupal\Core\Database\Database;
/**
* Abstract argument handler for dates.
......
<?php
/**
* @file
* Contains \Drupal\views\Tests\Handler\ArgumentDateTest.
*/
namespace Drupal\views\Tests\Handler;
use Drupal\views\Tests\ViewUnitTestBase;
/**
* Tests the core date argument handlers.
*
* @see \Drupal\views\Plugin\views\argument\Date
*/
class ArgumentDateTest extends ViewUnitTestBase {
/**
* Views used by this test.
*
* @var array
*/
public static $testViews = array('test_argument_date');
/**
* Modules to enable.
*
* @todo Remove the node dependency once the handlers are moved to views.
*
* @var array
*/
public static $modules = array('node', 'user');
/**
* Stores the column map for this testCase.
*
* @var array
*/
protected $columnMap = array(
'id' => 'id',
);
public static function getInfo() {
return array(
'name' => 'Argument: Date',
'description' => 'Tests the core date argument handler.',
'group' => 'Views Handlers',
);
}
protected function setUp() {
parent::setUp();
$this->installSchema('user', 'role_permission');
}
/**
* Overrides \Drupal\views\Tests\ViewUnitTestBase::viewsData().
*/
public function viewsData() {
$data = parent::viewsData();
$date_plugins = array(
'node_created_fulldate',
'node_created_day',
'node_created_month',
'node_created_week',
'node_created_year',
'node_created_year_month',
);
foreach ($date_plugins as $plugin_id) {
$data['views_test_data'][$plugin_id] = $data['views_test_data']['created'];
$data['views_test_data'][$plugin_id]['real field'] = 'created';
$data['views_test_data'][$plugin_id]['argument']['id'] = $plugin_id;
}
return $data;
}
/**
* Tests the CreatedFullDate handler.
*
* @see \Drupal\node\Plugin\views\argument\CreatedFullDate
*/
public function testCreatedFullDateHandler() {
$view = views_get_view('test_argument_date');
$view->setDisplay('default');
$this->executeView($view, array('20000102'));
$expected = array();
$expected[] = array('id' => 2);
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
$view->setDisplay('default');
$this->executeView($view, array('20000101'));
$expected = array();
$expected[] = array('id' => 1);
$expected[] = array('id' => 3);
$expected[] = array('id' => 4);
$expected[] = array('id' => 5);
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
$view->setDisplay('default');
$this->executeView($view, array('20001023'));
$expected = array();
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
}
/**
* Tests the Day handler.
*
* @see \Drupal\node\Plugin\views\argument\CreatedDay
*/
public function testDayHandler() {
$view = views_get_view('test_argument_date');
$view->setDisplay('embed_1');
$this->executeView($view, array('02'));
$expected = array();
$expected[] = array('id' => 2);
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
$view->setDisplay('embed_1');
$this->executeView($view, array('01'));
$expected = array();
$expected[] = array('id' => 1);
$expected[] = array('id' => 3);
$expected[] = array('id' => 4);
$expected[] = array('id' => 5);
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
$view->setDisplay('embed_1');
$this->executeView($view, array('23'));
$expected = array();
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
}
/**
* Tests the Month handler.
*
* @see \Drupal\node\Plugin\views\argument\CreatedMonth
*/
public function testMonthHandler() {
$view = views_get_view('test_argument_date');
$view->setDisplay('embed_2');
$this->executeView($view, array('01'));
$expected = array();
$expected[] = array('id' => 1);
$expected[] = array('id' => 2);
$expected[] = array('id' => 3);
$expected[] = array('id' => 4);
$expected[] = array('id' => 5);
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
$view->setDisplay('embed_2');
$this->executeView($view, array('23'));
$expected = array();
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
}
/**
* Tests the Week handler.
*
* @see \Drupal\node\Plugin\views\argument\CreatedWeek
*/
public function testWeekHandler() {
$this->container->get('database')->update('views_test_data')
->fields(array('created' => gmmktime(0, 0, 0, 1, 1, 2000)))
->condition('id', 3)
->execute();
$this->container->get('database')->update('views_test_data')
->fields(array('created' => gmmktime(0, 0, 0, 1, 10, 2000)))
->condition('id', 4)
->execute();
$this->container->get('database')->update('views_test_data')
->fields(array('created' => gmmktime(0, 0, 0, 2, 1, 2000)))
->condition('id', 5)
->execute();
$view = views_get_view('test_argument_date');
$view->setDisplay('embed_3');
// The first jan 2000 was still in the last week of the previous year.
$this->executeView($view, array(52));
$expected = array();
$expected[] = array('id' => 1);
$expected[] = array('id' => 2);
$expected[] = array('id' => 3);
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
$view->setDisplay('embed_3');
$this->executeView($view, array('02'));
$expected = array();
$expected[] = array('id' => 4);
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
$view->setDisplay('embed_3');
$this->executeView($view, array('05'));
$expected = array();
$expected[] = array('id' => 5);
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
$view->setDisplay('embed_3');
$this->executeView($view, array('23'));
$expected = array();
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
}
/**
* Tests the Year handler.
*
* @see \Drupal\node\Plugin\views\argument\CreatedYear
*/
public function testYearHandler() {
$this->container->get('database')->update('views_test_data')
->fields(array('created' => gmmktime(0, 0, 0, 1, 1, 2001)))
->condition('id', 3)
->execute();
$this->container->get('database')->update('views_test_data')
->fields(array('created' => gmmktime(0, 0, 0, 1, 1, 2002)))
->condition('id', 4)
->execute();
$this->container->get('database')->update('views_test_data')
->fields(array('created' => gmmktime(0, 0, 0, 1, 1, 2002)))
->condition('id', 5)
->execute();
$view = views_get_view('test_argument_date');
$view->setDisplay('embed_4');
$this->executeView($view, array('2000'));
$expected = array();
$expected[] = array('id' => 1);
$expected[] = array('id' => 2);
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
$view->setDisplay('embed_4');
$this->executeView($view, array('2001'));
$expected = array();
$expected[] = array('id' => 3);
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
$view->setDisplay('embed_4');
$this->executeView($view, array('2002'));
$expected = array();
$expected[] = array('id' => 4);
$expected[] = array('id' => 5);
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
$view->setDisplay('embed_4');
$this->executeView($view, array('23'));
$expected = array();
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
}
/**
* Tests the YearMonth handler.
*
* @see \Drupal\node\Plugin\views\argument\CreatedYearMonth
*/
public function testYearMonthHandler() {
$this->container->get('database')->update('views_test_data')
->fields(array('created' => gmmktime(0, 0, 0, 1, 1, 2001)))
->condition('id', 3)
->execute();
$this->container->get('database')->update('views_test_data')
->fields(array('created' => gmmktime(0, 0, 0, 4, 1, 2001)))
->condition('id', 4)
->execute();
$this->container->get('database')->update('views_test_data')
->fields(array('created' => gmmktime(0, 0, 0, 4, 1, 2001)))
->condition('id', 5)
->execute();
$view = views_get_view('test_argument_date');
$view->setDisplay('embed_5');
$this->executeView($view, array('200001'));
$expected = array();
$expected[] = array('id' => 1);
$expected[] = array('id' => 2);
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
$view->setDisplay('embed_5');
$this->executeView($view, array('200101'));
$expected = array();
$expected[] = array('id' => 3);
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
$view->setDisplay('embed_5');
$this->executeView($view, array('200104'));
$expected = array();
$expected[] = array('id' => 4);
$expected[] = array('id' => 5);
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
$view->destroy();
$view->setDisplay('embed_5');
$this->executeView($view, array('23'));
$expected = array();
$this->assertIdenticalResultset($view, $expected, $this->columnMap);
}
}
base_table: views_test_data
core: '8'
description: ''
status: '1'
display:
default:
display_options:
defaults:
fields: '0'
pager: '0'
pager_options: '0'
sorts: '0'
arguments:
node_created_fulldate:
field: node_created_fulldate
id: node_created_fulldate
table: views_test_data
plugin_id: node_created_fulldate
fields:
id:
field: id
id: id
relationship: none
table: views_test_data
plugin_id: numeric
pager:
options:
offset: '0'
type: none
pager_options: { }
sorts:
id:
field: id
id: id
order: ASC
relationship: none
table: views_test_data
plugin_id: numeric
display_plugin: default
display_title: Master
id: default
position: '0'
embed_1:
display_options:
defaults:
arguments: '0'
arguments:
node_created_day:
field: node_created_day
id: node_created_day
table: views_test_data
plugin_id: node_created_day
display_plugin: embed
id: embed_1
embed_2:
display_options:
defaults:
arguments: '0'
arguments:
node_created_month:
field: node_created_month
id: node_created_month
table: views_test_data
plugin_id: node_created_month
display_plugin: embed
id: embed_2
embed_3:
display_options:
defaults:
arguments: '0'
arguments:
node_created_week:
field: node_created_week
id: node_created_week
table: views_test_data
plugin_id: node_created_week
display_plugin: embed
id: embed_3
embed_4:
display_options:
defaults:
arguments: '0'
arguments:
node_created_year:
field: node_created_year
id: node_created_year
table: views_test_data
plugin_id: node_created_year
display_plugin: embed
id: embed_4
embed_5:
display_options:
defaults:
arguments: '0'
arguments:
node_created_year_month:
field: node_created_year_month
id: node_created_year_month
table: views_test_data
plugin_id: node_created_year_month
display_plugin: embed
id: embed_5
human_name: ''
id: test_argument_date
tag: ''
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment