- <?php
- * @file
- * Definition of ViewsHandlerFilterNumericTest.
- */
-
- require_once BACKDROP_ROOT . '/core/modules/views/tests/views_query.test';
-
- * Tests the numeric filter handler.
- */
- class ViewsHandlerFilterNumericTest extends ViewsSqlTest {
- var $column_map = array();
-
- protected function setUp(array $modules = array()) {
- parent::setUp($modules);
- $this->column_map = array(
- 'views_test_name' => 'name',
- 'views_test_age' => 'age',
- );
- }
-
- function viewsData() {
- $data = parent::viewsData();
- $data['views_test']['age']['filter']['allow empty'] = TRUE;
- $data['views_test']['id']['filter']['allow empty'] = FALSE;
-
- return $data;
- }
-
- public function testFilterNumericSimple() {
- $view = $this->getBasicView();
-
-
- $view->display['default']->handler->override_option('filters', array(
- 'age' => array(
- 'id' => 'age',
- 'table' => 'views_test',
- 'field' => 'age',
- 'relationship' => 'none',
- 'operator' => '=',
- 'value' => array('value' => 28),
- ),
- ));
-
- $this->executeView($view);
- $resultset = array(
- array(
- 'name' => 'Ringo',
- 'age' => 28,
- ),
- );
- $this->assertIdenticalResultset($view, $resultset, $this->column_map);
- }
-
- public function testFilterNumericExposedGroupedSimple() {
- $filters = $this->getGroupedExposedFilters();
- $view = $this->getBasicPageView();
-
-
- $filters['age']['group_info']['default_group'] = 1;
- $view->set_display('page_1');
- $view->display['page_1']->handler->override_option('filters', $filters);
-
- $this->executeView($view);
- $resultset = array(
- array(
- 'name' => 'Ringo',
- 'age' => 28,
- ),
- );
- $this->assertIdenticalResultset($view, $resultset, $this->column_map);
- }
-
- public function testFilterNumericBetween() {
- $view = $this->getBasicView();
-
-
- $view->display['default']->handler->override_option('filters', array(
- 'age' => array(
- 'id' => 'age',
- 'table' => 'views_test',
- 'field' => 'age',
- 'relationship' => 'none',
- 'operator' => 'between',
- 'value' => array(
- 'min' => 26,
- 'max' => 29,
- ),
- ),
- ));
-
- $this->executeView($view);
- $resultset = array(
- array(
- 'name' => 'George',
- 'age' => 27,
- ),
- array(
- 'name' => 'Ringo',
- 'age' => 28,
- ),
- array(
- 'name' => 'Paul',
- 'age' => 26,
- ),
- );
- $this->assertIdenticalResultset($view, $resultset, $this->column_map);
-
-
- $view->delete();
- $view = $this->getBasicView();
-
-
- $view->display['default']->handler->override_option('filters', array(
- 'age' => array(
- 'id' => 'age',
- 'table' => 'views_test',
- 'field' => 'age',
- 'relationship' => 'none',
- 'operator' => 'not between',
- 'value' => array(
- 'min' => 26,
- 'max' => 29,
- ),
- ),
- ));
-
- $this->executeView($view);
- $resultset = array(
- array(
- 'name' => 'John',
- 'age' => 25,
- ),
- array(
- 'name' => 'Paul',
- 'age' => 26,
- ),
- array(
- 'name' => 'Meredith',
- 'age' => 30,
- ),
- );
- $this->assertIdenticalResultset($view, $resultset, $this->column_map);
- }
-
- public function testFilterNumericExposedGroupedBetween() {
- $filters = $this->getGroupedExposedFilters();
- $view = $this->getBasicPageView();
-
-
- $filters['age']['group_info']['default_group'] = 2;
- $view->set_display('page_1');
- $view->display['page_1']->handler->override_option('filters', $filters);
-
-
- $this->executeView($view);
- $resultset = array(
- array(
- 'name' => 'George',
- 'age' => 27,
- ),
- array(
- 'name' => 'Ringo',
- 'age' => 28,
- ),
- array(
- 'name' => 'Paul',
- 'age' => 26,
- ),
- );
- $this->assertIdenticalResultset($view, $resultset, $this->column_map);
- }
-
- public function testFilterNumericExposedGroupedNotBetween() {
- $filters = $this->getGroupedExposedFilters();
- $view = $this->getBasicPageView();
-
-
- $filters['age']['group_info']['default_group'] = 3;
- $view->set_display('page_1');
- $view->display['page_1']->handler->override_option('filters', $filters);
-
-
- $this->executeView($view);
- $resultset = array(
- array(
- 'name' => 'John',
- 'age' => 25,
- ),
- array(
- 'name' => 'Paul',
- 'age' => 26,
- ),
- array(
- 'name' => 'Meredith',
- 'age' => 30,
- ),
- );
- $this->assertIdenticalResultset($view, $resultset, $this->column_map);
- }
-
-
- public function testFilterNumericEmpty() {
- $view = $this->getBasicView();
-
-
- $view->display['default']->handler->override_option('filters', array(
- 'age' => array(
- 'id' => 'age',
- 'table' => 'views_test',
- 'field' => 'age',
- 'relationship' => 'none',
- 'operator' => 'empty',
- ),
- ));
-
- $this->executeView($view);
- $resultset = array(
- );
- $this->assertIdenticalResultset($view, $resultset, $this->column_map);
-
- $view->delete();
- $view = $this->getBasicView();
-
-
- $view->display['default']->handler->override_option('filters', array(
- 'age' => array(
- 'id' => 'age',
- 'table' => 'views_test',
- 'field' => 'age',
- 'relationship' => 'none',
- 'operator' => 'not empty',
- ),
- ));
-
- $this->executeView($view);
- $resultset = array(
- array(
- 'name' => 'John',
- 'age' => 25,
- ),
- array(
- 'name' => 'George',
- 'age' => 27,
- ),
- array(
- 'name' => 'Ringo',
- 'age' => 28,
- ),
- array(
- 'name' => 'Paul',
- 'age' => 26,
- ),
- array(
- 'name' => 'Meredith',
- 'age' => 30,
- ),
- );
- $this->assertIdenticalResultset($view, $resultset, $this->column_map);
- }
-
-
- public function testFilterNumericExposedGroupedEmpty() {
- $filters = $this->getGroupedExposedFilters();
- $view = $this->getBasicPageView();
-
-
- $filters['age']['group_info']['default_group'] = 4;
- $view->set_display('page_1');
- $view->display['page_1']->handler->override_option('filters', $filters);
-
-
- $this->executeView($view);
- $resultset = array(
- );
- $this->assertIdenticalResultset($view, $resultset, $this->column_map);
- }
-
- public function testFilterNumericExposedGroupedNotEmpty() {
- $filters = $this->getGroupedExposedFilters();
- $view = $this->getBasicPageView();
-
-
- $filters['age']['group_info']['default_group'] = 5;
- $view->set_display('page_1');
- $view->display['page_1']->handler->override_option('filters', $filters);
-
-
- $this->executeView($view);
- $resultset = array(
- array(
- 'name' => 'John',
- 'age' => 25,
- ),
- array(
- 'name' => 'George',
- 'age' => 27,
- ),
- array(
- 'name' => 'Ringo',
- 'age' => 28,
- ),
- array(
- 'name' => 'Paul',
- 'age' => 26,
- ),
- array(
- 'name' => 'Meredith',
- 'age' => 30,
- ),
- );
- $this->assertIdenticalResultset($view, $resultset, $this->column_map);
- }
-
-
- public function testAllowEmpty() {
- $view = $this->getBasicView();
-
- $view->display['default']->handler->override_option('filters', array(
- 'id' => array(
- 'id' => 'id',
- 'table' => 'views_test',
- 'field' => 'id',
- 'relationship' => 'none',
- ),
- 'age' => array(
- 'id' => 'age',
- 'table' => 'views_test',
- 'field' => 'age',
- 'relationship' => 'none',
- ),
- ));
-
- $view->set_display('default');
- $view->init_handlers();
-
- $id_operators = $view->filter['id']->operators();
- $age_operators = $view->filter['age']->operators();
-
- $this->assertFalse(isset($id_operators['empty']));
- $this->assertFalse(isset($id_operators['not empty']));
- $this->assertTrue(isset($age_operators['empty']));
- $this->assertTrue(isset($age_operators['not empty']));
- }
-
- protected function getGroupedExposedFilters() {
- $filters = array(
- 'age' => array(
- 'id' => 'age',
- 'table' => 'views_test',
- 'field' => 'age',
- 'relationship' => 'none',
- 'exposed' => TRUE,
- 'expose' => array(
- 'operator' => 'age_op',
- 'label' => 'age',
- 'identifier' => 'age',
- ),
- 'is_grouped' => TRUE,
- 'group_info' => array(
- 'label' => 'age',
- 'identifier' => 'age',
- 'default_group' => 'All',
- 'group_items' => array(
- 1 => array(
- 'title' => 'Age is 28',
- 'operator' => '=',
- 'value' => array('value' => 28),
- ),
- 2 => array(
- 'title' => 'Age is between 26 and 29',
- 'operator' => 'between',
- 'value' => array(
- 'min' => 26,
- 'max' => 29,
- ),
- ),
- 3 => array(
- 'title' => 'Age is not between 26 and 29',
- 'operator' => 'not between',
- 'value' => array(
- 'min' => 26,
- 'max' => 29,
- ),
- ),
- 4 => array(
- 'title' => 'Age is empty',
- 'operator' => 'empty',
- ),
- 5 => array(
- 'title' => 'Age is not empty',
- 'operator' => 'not empty',
- ),
- ),
- ),
- ),
- );
- return $filters;
- }
-
- }