Newer
Older
Rob Loach
committed
* Definition of Drupal\views\Tests\Handler\FilterDateTest.
Rob Loach
committed
namespace Drupal\views\Tests\Handler;
* Tests the core Drupal\views\Plugin\views\filter\Date handler.
class FilterDateTest extends HandlerTestBase {
catch
committed
/**
* Views used by this test.
*
* @var array
*/
public static $testViews = array('test_filter_date_between');
Tim Plunkett
committed
/**
* Modules to enable.
*
* @var array
*/
public static $modules = array('views_ui');
public static function getInfo() {
return array(
'name' => 'Filter: Date',
'description' => 'Test the core Drupal\views\Plugin\views\filter\Date handler.',
'group' => 'Views Handlers',
);
}
function setUp() {
parent::setUp();
// Add some basic test nodes.
$this->nodes = array();
$this->nodes[] = $this->drupalCreateNode(array('created' => 100000));
$this->nodes[] = $this->drupalCreateNode(array('created' => 200000));
$this->nodes[] = $this->drupalCreateNode(array('created' => 300000));
$this->nodes[] = $this->drupalCreateNode(array('created' => time() + 86400));
$this->map = array(
'nid' => 'nid',
);
}
catch
committed
/**
* Runs other test methods.
*/
protected function testDateFilter() {
$this->_testOffset();
$this->_testBetween();
$this->_testUiValidation();
}
catch
committed
protected function _testOffset() {
$view = views_get_view('test_filter_date_between');
Damian Lee
committed
Damian Lee
committed
$view->initHandlers();
$view->filter['created']->operator = '>';
$view->filter['created']->value['type'] = 'offset';
$view->filter['created']->value['value'] = '+1 hour';
Damian Lee
committed
$view->executeDisplay('default');
array('nid' => $this->nodes[3]->id()),
);
$this->assertIdenticalResultset($view, $expected_result, $this->map);
catch
committed
$view->destroy();
Damian Lee
committed
$view->initHandlers();
$view->filter['created']->operator = 'between';
$view->filter['created']->value['type'] = 'offset';
$view->filter['created']->value['max'] = '+2 days';
$view->filter['created']->value['min'] = '+1 hour';
Damian Lee
committed
$view->executeDisplay('default');
array('nid' => $this->nodes[3]->id()),
);
$this->assertIdenticalResultset($view, $expected_result, $this->map);
}
/**
* Tests the filter operator between/not between.
*/
catch
committed
protected function _testBetween() {
$view = views_get_view('test_filter_date_between');
Damian Lee
committed
Damian Lee
committed
$view->initHandlers();
$view->filter['created']->operator = 'between';
$view->filter['created']->value['min'] = format_date(150000, 'custom', 'Y-m-d H:s');
$view->filter['created']->value['max'] = format_date(250000, 'custom', 'Y-m-d H:s');
Damian Lee
committed
$view->executeDisplay('default');
array('nid' => $this->nodes[1]->id()),
);
$this->assertIdenticalResultset($view, $expected_result, $this->map);
catch
committed
$view->destroy();
Damian Lee
committed
$view->initHandlers();
$view->filter['created']->operator = 'between';
$view->filter['created']->value['max'] = format_date(250000, 'custom', 'Y-m-d H:s');
Damian Lee
committed
$view->executeDisplay('default');
array('nid' => $this->nodes[0]->id()),
array('nid' => $this->nodes[1]->id()),
);
$this->assertIdenticalResultset($view, $expected_result, $this->map);
catch
committed
$view->destroy();
Damian Lee
committed
$view->initHandlers();
$view->filter['created']->operator = 'not between';
$view->filter['created']->value['min'] = format_date(150000, 'custom', 'Y-m-d H:s');
$view->filter['created']->value['max'] = format_date(250000, 'custom', 'Y-m-d H:s');
Damian Lee
committed
$view->executeDisplay('default');
array('nid' => $this->nodes[0]->id()),
array('nid' => $this->nodes[2]->id()),
array('nid' => $this->nodes[3]->id()),
);
$this->assertIdenticalResultset($view, $expected_result, $this->map);
catch
committed
$view->destroy();
Damian Lee
committed
$view->initHandlers();
$view->filter['created']->operator = 'not between';
$view->filter['created']->value['max'] = format_date(150000, 'custom', 'Y-m-d H:s');
Damian Lee
committed
$view->executeDisplay('default');
array('nid' => $this->nodes[1]->id()),
array('nid' => $this->nodes[2]->id()),
array('nid' => $this->nodes[3]->id()),
);
$this->assertIdenticalResultset($view, $expected_result, $this->map);
}
/**
* Make sure the validation callbacks works.
*/
catch
committed
protected function _testUiValidation() {
Damian Lee
committed
$this->drupalLogin($this->drupalCreateUser(array('administer views', 'administer site configuration')));
$this->drupalGet('admin/structure/views/view/test_filter_date_between/edit');
Angie Byron
committed
$this->drupalGet('admin/structure/views/nojs/handler/test_filter_date_between/default/filter/created');
$edit = array();
// Generate a definitive wrong value, which should be checked by validation.
$edit['options[value][value]'] = $this->randomString() . '-------';
$this->drupalPostForm(NULL, $edit, t('Apply'));
$this->assertText(t('Invalid date format.'), 'Make sure that validation is runned and the invalidate date format is identified.');
}
}