summaryrefslogtreecommitdiff
path: root/sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test
diff options
context:
space:
mode:
Diffstat (limited to 'sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test')
-rw-r--r--sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test409
1 files changed, 409 insertions, 0 deletions
diff --git a/sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test b/sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test
new file mode 100644
index 000000000..2ab1aea00
--- /dev/null
+++ b/sites/all/modules/views/tests/handlers/views_handler_filter_numeric.test
@@ -0,0 +1,409 @@
+<?php
+
+/**
+ * @file
+ * Definition of ViewsHandlerFilterNumericTest.
+ */
+
+/**
+ * Tests the numeric filter handler.
+ */
+class ViewsHandlerFilterNumericTest extends ViewsSqlTest {
+ var $column_map = array();
+
+ public static function getInfo() {
+ return array(
+ 'name' => 'Filter: Numeric',
+ 'description' => 'Tests the numeric filter handler',
+ 'group' => 'Views Handlers',
+ );
+ }
+
+ function setUp() {
+ parent::setUp();
+ $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();
+
+ // Change the filtering
+ $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();
+
+ // Filter: Age, Operator: =, Value: 28
+ $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();
+
+ // Change the filtering
+ $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);
+
+ // test not between
+ $view->delete();
+ $view = $this->getBasicView();
+
+ // Change the filtering
+ $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();
+
+ // Filter: Age, Operator: between, Value: 26 and 29
+ $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();
+
+ // Filter: Age, Operator: between, Value: 26 and 29
+ $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();
+
+ // Change the filtering
+ $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();
+
+ // Change the filtering
+ $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();
+
+ // Filter: Age, Operator: empty, Value:
+ $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();
+
+ // Filter: Age, Operator: empty, Value:
+ $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;
+ }
+
+}