first import
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerAreaTextTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the text area handler.
|
||||
*
|
||||
* @see views_handler_area_text
|
||||
*/
|
||||
class ViewsHandlerAreaTextTest extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Area: Text',
|
||||
'description' => 'Test the core views_handler_area_text handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
public function testAreaText() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// add a text header
|
||||
$string = $this->randomName();
|
||||
$view->display['default']->handler->override_option('header', array(
|
||||
'area' => array(
|
||||
'id' => 'area',
|
||||
'table' => 'views',
|
||||
'field' => 'area',
|
||||
'content' => $string,
|
||||
),
|
||||
));
|
||||
|
||||
// Execute the view.
|
||||
$this->executeView($view);
|
||||
|
||||
$view->display_handler->handlers['header']['area']->options['format'] = $this->randomString();
|
||||
$this->assertEqual(NULL, $view->display_handler->handlers['header']['area']->render(), 'Non existant format should return nothing');
|
||||
|
||||
$view->display_handler->handlers['header']['area']->options['format'] = filter_default_format();
|
||||
$this->assertEqual(check_markup($string), $view->display_handler->handlers['header']['area']->render(), 'Existant format should return something');
|
||||
|
||||
// Empty results, and it shouldn't be displayed .
|
||||
$this->assertEqual('', $view->display_handler->handlers['header']['area']->render(TRUE), 'No result should lead to no header');
|
||||
// Empty results, and it should be displayed.
|
||||
$view->display_handler->handlers['header']['area']->options['empty'] = TRUE;
|
||||
$this->assertEqual(check_markup($string), $view->display_handler->handlers['header']['area']->render(TRUE), 'No result, but empty enabled lead to a full header');
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerArgumentNullTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the core views_handler_argument_null handler.
|
||||
*/
|
||||
class ViewsHandlerArgumentNullTest extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Argument: Null',
|
||||
'description' => 'Test the core views_handler_argument_null handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
function viewsData() {
|
||||
$data = parent::viewsData();
|
||||
$data['views_test']['id']['argument']['handler'] = 'views_handler_argument_null';
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function testAreaText() {
|
||||
// Test validation
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Add a null argument.
|
||||
$string = $this->randomString();
|
||||
$view->display['default']->handler->override_option('arguments', array(
|
||||
'null' => array(
|
||||
'id' => 'null',
|
||||
'table' => 'views',
|
||||
'field' => 'null',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
// Make sure that the argument is not validated yet.
|
||||
unset($view->argument['null']->argument_validated);
|
||||
$this->assertTrue($view->argument['null']->validate_arg(26));
|
||||
// test must_not_be option.
|
||||
unset($view->argument['null']->argument_validated);
|
||||
$view->argument['null']->options['must_not_be'] = TRUE;
|
||||
$this->assertFalse($view->argument['null']->validate_arg(26), 'must_not_be returns FALSE, if there is an argument');
|
||||
unset($view->argument['null']->argument_validated);
|
||||
$this->assertTrue($view->argument['null']->validate_arg(NULL), 'must_not_be returns TRUE, if there is no argument');
|
||||
|
||||
// Test execution.
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Add a argument, which has null as handler.
|
||||
$string = $this->randomString();
|
||||
$view->display['default']->handler->override_option('arguments', array(
|
||||
'id' => array(
|
||||
'id' => 'id',
|
||||
'table' => 'views_test',
|
||||
'field' => 'id',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view, array(26));
|
||||
|
||||
// The argument should be ignored, so every result should return.
|
||||
$this->assertEqual(5, count($view->result));
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerArgumentNullTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the core views_handler_argument_string handler.
|
||||
*/
|
||||
class ViewsHandlerArgumentStringTest extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Argument: String',
|
||||
'description' => 'Test the core views_handler_argument_string handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the glossary feature.
|
||||
*/
|
||||
function testGlossary() {
|
||||
// Setup some nodes, one with a, two with b and three with c.
|
||||
$counter = 1;
|
||||
foreach (array('a', 'b', 'c') as $char) {
|
||||
for ($i = 0; $i < $counter; $i++) {
|
||||
$edit = array(
|
||||
'title' => $char . $this->randomName(),
|
||||
);
|
||||
$this->drupalCreateNode($edit);
|
||||
}
|
||||
}
|
||||
|
||||
$view = $this->viewGlossary();
|
||||
$view->init_display();
|
||||
$this->executeView($view);
|
||||
|
||||
$count_field = 'nid';
|
||||
foreach ($view->result as &$row) {
|
||||
if (strpos($row->node_title, 'a') === 0) {
|
||||
$this->assertEqual(1, $row->{$count_field});
|
||||
}
|
||||
if (strpos($row->node_title, 'b') === 0) {
|
||||
$this->assertEqual(2, $row->{$count_field});
|
||||
}
|
||||
if (strpos($row->node_title, 'c') === 0) {
|
||||
$this->assertEqual(3, $row->{$count_field});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Provide a test view for testGlossary.
|
||||
*
|
||||
* @see testGlossary
|
||||
* @return view
|
||||
*/
|
||||
function viewGlossary() {
|
||||
$view = new view();
|
||||
$view->name = 'test_glossary';
|
||||
$view->description = '';
|
||||
$view->tag = 'default';
|
||||
$view->base_table = 'node';
|
||||
$view->human_name = 'test_glossary';
|
||||
$view->core = 7;
|
||||
$view->api_version = '3.0';
|
||||
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
|
||||
|
||||
/* Display: Master */
|
||||
$handler = $view->new_display('default', 'Master', 'default');
|
||||
$handler->display->display_options['access']['type'] = 'perm';
|
||||
$handler->display->display_options['cache']['type'] = 'none';
|
||||
$handler->display->display_options['query']['type'] = 'views_query';
|
||||
$handler->display->display_options['exposed_form']['type'] = 'basic';
|
||||
$handler->display->display_options['pager']['type'] = 'full';
|
||||
$handler->display->display_options['style_plugin'] = 'default';
|
||||
$handler->display->display_options['row_plugin'] = 'fields';
|
||||
/* Field: Content: Title */
|
||||
$handler->display->display_options['fields']['title']['id'] = 'title';
|
||||
$handler->display->display_options['fields']['title']['table'] = 'node';
|
||||
$handler->display->display_options['fields']['title']['field'] = 'title';
|
||||
$handler->display->display_options['fields']['title']['label'] = '';
|
||||
/* Contextual filter: Content: Title */
|
||||
$handler->display->display_options['arguments']['title']['id'] = 'title';
|
||||
$handler->display->display_options['arguments']['title']['table'] = 'node';
|
||||
$handler->display->display_options['arguments']['title']['field'] = 'title';
|
||||
$handler->display->display_options['arguments']['title']['default_argument_type'] = 'fixed';
|
||||
$handler->display->display_options['arguments']['title']['summary']['number_of_records'] = '0';
|
||||
$handler->display->display_options['arguments']['title']['summary']['format'] = 'default_summary';
|
||||
$handler->display->display_options['arguments']['title']['summary_options']['items_per_page'] = '25';
|
||||
$handler->display->display_options['arguments']['title']['glossary'] = TRUE;
|
||||
$handler->display->display_options['arguments']['title']['limit'] = '1';
|
||||
|
||||
return $view;
|
||||
}
|
||||
}
|
314
sites/all/modules/views/tests/handlers/views_handler_field.test
Normal file
314
sites/all/modules/views/tests/handlers/views_handler_field.test
Normal file
@@ -0,0 +1,314 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerFieldTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the generic field handler
|
||||
*
|
||||
* @see views_handler_field
|
||||
*/
|
||||
class ViewsHandlerFieldTest extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Field',
|
||||
'description' => 'Test the core views_handler_field handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
$this->column_map = array(
|
||||
'views_test_name' => 'name',
|
||||
);
|
||||
}
|
||||
|
||||
function testEmpty() {
|
||||
$this->_testHideIfEmpty();
|
||||
$this->_testEmptyText();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the hide if empty functionality.
|
||||
*
|
||||
* This tests alters the result to get easier and less coupled results.
|
||||
*/
|
||||
function _testHideIfEmpty() {
|
||||
$view = $this->getBasicView();
|
||||
$view->init_display();
|
||||
$this->executeView($view);
|
||||
|
||||
$column_map_reversed = array_flip($this->column_map);
|
||||
$view->row_index = 0;
|
||||
$random_name = $this->randomName();
|
||||
$random_value = $this->randomName();
|
||||
|
||||
// Test when results are not rewritten and empty values are not hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = FALSE;
|
||||
$view->field['name']->options['hide_empty'] = FALSE;
|
||||
$view->field['name']->options['empty_zero'] = FALSE;
|
||||
|
||||
// Test a valid string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = $random_name;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, $random_name, 'By default, a string should not be treated as empty.');
|
||||
|
||||
// Test an empty string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "", 'By default, "" should not be treated as empty.');
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, '0', 'By default, 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "0", 'By default, "0" should not be treated as empty.');
|
||||
|
||||
// Test when results are not rewritten and non-zero empty values are hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = TRUE;
|
||||
$view->field['name']->options['hide_empty'] = TRUE;
|
||||
$view->field['name']->options['empty_zero'] = FALSE;
|
||||
|
||||
// Test a valid string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = $random_name;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, $random_name, 'If hide_empty is checked, a string should not be treated as empty.');
|
||||
|
||||
// Test an empty string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "", 'If hide_empty is checked, "" should be treated as empty.');
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, '0', 'If hide_empty is checked, but not empty_zero, 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "0", 'If hide_empty is checked, but not empty_zero, "0" should not be treated as empty.');
|
||||
|
||||
// Test when results are not rewritten and all empty values are hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = TRUE;
|
||||
$view->field['name']->options['hide_empty'] = TRUE;
|
||||
$view->field['name']->options['empty_zero'] = TRUE;
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "", 'If hide_empty and empty_zero are checked, 0 should be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "", 'If hide_empty and empty_zero are checked, "0" should be treated as empty.');
|
||||
|
||||
// Test when results are rewritten to a valid string and non-zero empty
|
||||
// results are hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = FALSE;
|
||||
$view->field['name']->options['hide_empty'] = TRUE;
|
||||
$view->field['name']->options['empty_zero'] = FALSE;
|
||||
$view->field['name']->options['alter']['alter_text'] = TRUE;
|
||||
$view->field['name']->options['alter']['text'] = $random_name;
|
||||
|
||||
// Test a valid string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = $random_value;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, it should not be treated as empty.');
|
||||
|
||||
// Test an empty string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, "" should not be treated as empty.');
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, "0" should not be treated as empty.');
|
||||
|
||||
// Test when results are rewritten to an empty string and non-zero empty results are hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = TRUE;
|
||||
$view->field['name']->options['hide_empty'] = TRUE;
|
||||
$view->field['name']->options['empty_zero'] = FALSE;
|
||||
$view->field['name']->options['alter']['alter_text'] = TRUE;
|
||||
$view->field['name']->options['alter']['text'] = "";
|
||||
|
||||
// Test a valid string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = $random_name;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, $random_name, 'If the rewritten string is empty, it should not be treated as empty.');
|
||||
|
||||
// Test an empty string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "", 'If the rewritten string is empty, "" should be treated as empty.');
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, '0', 'If the rewritten string is empty, 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "0", 'If the rewritten string is empty, "0" should not be treated as empty.');
|
||||
|
||||
// Test when results are rewritten to zero as a string and non-zero empty
|
||||
// results are hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = FALSE;
|
||||
$view->field['name']->options['hide_empty'] = TRUE;
|
||||
$view->field['name']->options['empty_zero'] = FALSE;
|
||||
$view->field['name']->options['alter']['alter_text'] = TRUE;
|
||||
$view->field['name']->options['alter']['text'] = "0";
|
||||
|
||||
// Test a valid string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = $random_name;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, the string rewritten as 0 should not be treated as empty.');
|
||||
|
||||
// Test an empty string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, "" rewritten as 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, "0" should not be treated as empty.');
|
||||
|
||||
// Test when results are rewritten to a valid string and non-zero empty
|
||||
// results are hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = TRUE;
|
||||
$view->field['name']->options['hide_empty'] = TRUE;
|
||||
$view->field['name']->options['empty_zero'] = FALSE;
|
||||
$view->field['name']->options['alter']['alter_text'] = TRUE;
|
||||
$view->field['name']->options['alter']['text'] = $random_value;
|
||||
|
||||
// Test a valid string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = $random_name;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, $random_value, 'If the original and rewritten strings are valid, it should not be treated as empty.');
|
||||
|
||||
// Test an empty string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "", 'If either the original or rewritten string is invalid, "" should be treated as empty.');
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, $random_value, 'If the original and rewritten strings are valid, 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, $random_value, 'If the original and rewritten strings are valid, "0" should not be treated as empty.');
|
||||
|
||||
// Test when results are rewritten to zero as a string and all empty
|
||||
// original values and results are hidden.
|
||||
$view->field['name']->options['hide_alter_empty'] = TRUE;
|
||||
$view->field['name']->options['hide_empty'] = TRUE;
|
||||
$view->field['name']->options['empty_zero'] = TRUE;
|
||||
$view->field['name']->options['alter']['alter_text'] = TRUE;
|
||||
$view->field['name']->options['alter']['text'] = "0";
|
||||
|
||||
// Test a valid string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = $random_name;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "", 'If the rewritten string is zero, it should be treated as empty.');
|
||||
|
||||
// Test an empty string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "", 'If the rewritten string is zero, "" should be treated as empty.');
|
||||
|
||||
// Test zero as an integer.
|
||||
$view->result[0]->{$column_map_reversed['name']} = 0;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "", 'If the rewritten string is zero, 0 should not be treated as empty.');
|
||||
|
||||
// Test zero as a string.
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "", 'If the rewritten string is zero, "0" should not be treated as empty.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the usage of the empty text.
|
||||
*/
|
||||
function _testEmptyText() {
|
||||
$view = $this->getBasicView();
|
||||
$view->init_display();
|
||||
$this->executeView($view);
|
||||
|
||||
$column_map_reversed = array_flip($this->column_map);
|
||||
$view->row_index = 0;
|
||||
|
||||
$empty_text = $view->field['name']->options['empty'] = $this->randomName();
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, $empty_text, 'If a field is empty, the empty text should be used for the output.');
|
||||
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, "0", 'If a field is 0 and empty_zero is not checked, the empty text should not be used for the output.');
|
||||
|
||||
$view->result[0]->{$column_map_reversed['name']} = "0";
|
||||
$view->field['name']->options['empty_zero'] = TRUE;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, $empty_text, 'If a field is 0 and empty_zero is checked, the empty text should be used for the output.');
|
||||
|
||||
$view->result[0]->{$column_map_reversed['name']} = "";
|
||||
$view->field['name']->options['alter']['alter_text'] = TRUE;
|
||||
$alter_text = $view->field['name']->options['alter']['text'] = $this->randomName();
|
||||
$view->field['name']->options['hide_alter_empty'] = FALSE;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, $alter_text, 'If a field is empty, some rewrite text exists, but hide_alter_empty is not checked, render the rewrite text.');
|
||||
|
||||
$view->field['name']->options['hide_alter_empty'] = TRUE;
|
||||
$render = $view->field['name']->advanced_render($view->result[0]);
|
||||
$this->assertIdentical($render, $empty_text, 'If a field is empty, some rewrite text exists, and hide_alter_empty is checked, use the empty text.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests views_handler_field::is_value_empty().
|
||||
*/
|
||||
function testIsValueEmpty() {
|
||||
$view = $this->getBasicView();
|
||||
$view->init_display();
|
||||
$view->init_handlers();
|
||||
$field = $view->field['name'];
|
||||
|
||||
$this->assertFalse($field->is_value_empty("not empty", TRUE), 'A normal string is not empty.');
|
||||
$this->assertTrue($field->is_value_empty("not empty", TRUE, FALSE), 'A normal string which skips empty() can be seen as empty.');
|
||||
|
||||
$this->assertTrue($field->is_value_empty("", TRUE), '"" is considered as empty.');
|
||||
|
||||
$this->assertTrue($field->is_value_empty('0', TRUE), '"0" is considered as empty if empty_zero is TRUE.');
|
||||
$this->assertTrue($field->is_value_empty(0, TRUE), '0 is considered as empty if empty_zero is TRUE.');
|
||||
$this->assertFalse($field->is_value_empty('0', FALSE), '"0" is considered not as empty if empty_zero is FALSE.');
|
||||
$this->assertFalse($field->is_value_empty(0, FALSE), '0 is considered not as empty if empty_zero is FALSE.');
|
||||
|
||||
$this->assertTrue($field->is_value_empty(NULL, TRUE, TRUE), 'Null should be always seen as empty, regardless of no_skip_empty.');
|
||||
$this->assertTrue($field->is_value_empty(NULL, TRUE, FALSE), 'Null should be always seen as empty, regardless of no_skip_empty.');
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerFieldBooleanTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the core views_handler_field_boolean handler.
|
||||
*/
|
||||
class ViewsHandlerFieldBooleanTest extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Field: Boolean',
|
||||
'description' => 'Test the core views_handler_field_boolean handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
function dataSet() {
|
||||
// Use default dataset but remove the age from john and paul
|
||||
$data = parent::dataSet();
|
||||
$data[0]['age'] = 0;
|
||||
$data[3]['age'] = 0;
|
||||
return $data;
|
||||
}
|
||||
|
||||
function viewsData() {
|
||||
$data = parent::viewsData();
|
||||
$data['views_test']['age']['field']['handler'] = 'views_handler_field_boolean';
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function testFieldBoolean() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
$view->display['default']->handler->override_option('fields', array(
|
||||
'age' => array(
|
||||
'id' => 'age',
|
||||
'table' => 'views_test',
|
||||
'field' => 'age',
|
||||
'relationship' => 'none',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
// This is john, which has no age, there are no custom formats defined, yet.
|
||||
$this->assertEqual(t('No'), $view->field['age']->advanced_render($view->result[0]));
|
||||
$this->assertEqual(t('Yes'), $view->field['age']->advanced_render($view->result[1]));
|
||||
|
||||
// Reverse the output.
|
||||
$view->field['age']->options['not'] = TRUE;
|
||||
$this->assertEqual(t('Yes'), $view->field['age']->advanced_render($view->result[0]));
|
||||
$this->assertEqual(t('No'), $view->field['age']->advanced_render($view->result[1]));
|
||||
|
||||
unset($view->field['age']->options['not']);
|
||||
|
||||
// Use another output format.
|
||||
$view->field['age']->options['type'] = 'true-false';
|
||||
$this->assertEqual(t('False'), $view->field['age']->advanced_render($view->result[0]));
|
||||
$this->assertEqual(t('True'), $view->field['age']->advanced_render($view->result[1]));
|
||||
|
||||
// test awesome unicode.
|
||||
$view->field['age']->options['type'] = 'unicode-yes-no';
|
||||
$this->assertEqual('✖', $view->field['age']->advanced_render($view->result[0]));
|
||||
$this->assertEqual('✔', $view->field['age']->advanced_render($view->result[1]));
|
||||
|
||||
// Set a custom output format.
|
||||
$view->field['age']->formats['test'] = array(t('Test-True'), t('Test-False'));
|
||||
$view->field['age']->options['type'] = 'test';
|
||||
$this->assertEqual(t('Test-False'), $view->field['age']->advanced_render($view->result[0]));
|
||||
$this->assertEqual(t('Test-True'), $view->field['age']->advanced_render($view->result[1]));
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerFilterCounterTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the views_handler_field_counter handler.
|
||||
*/
|
||||
class ViewsHandlerFilterCounterTest extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Field: Counter',
|
||||
'description' => 'Tests the views_handler_field_counter handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
function testSimple() {
|
||||
$view = $this->getBasicView();
|
||||
$view->display['default']->handler->override_option('fields', array(
|
||||
'counter' => array(
|
||||
'id' => 'counter',
|
||||
'table' => 'views',
|
||||
'field' => 'counter',
|
||||
'relationship' => 'none',
|
||||
),
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
),
|
||||
));
|
||||
$view->preview();
|
||||
|
||||
$this->assertEqual(1, $view->style_plugin->rendered_fields[0]['counter']);
|
||||
$this->assertEqual(2, $view->style_plugin->rendered_fields[1]['counter']);
|
||||
$this->assertEqual(3, $view->style_plugin->rendered_fields[2]['counter']);
|
||||
$view->destroy();
|
||||
|
||||
$view = $this->getBasicView();
|
||||
$rand_start = rand(5, 10);
|
||||
$view->display['default']->handler->override_option('fields', array(
|
||||
'counter' => array(
|
||||
'id' => 'counter',
|
||||
'table' => 'views',
|
||||
'field' => 'counter',
|
||||
'relationship' => 'none',
|
||||
'counter_start' => $rand_start
|
||||
),
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
),
|
||||
));
|
||||
$view->preview();
|
||||
|
||||
$this->assertEqual(0 + $rand_start, $view->style_plugin->rendered_fields[0]['counter']);
|
||||
$this->assertEqual(1 + $rand_start, $view->style_plugin->rendered_fields[1]['counter']);
|
||||
$this->assertEqual(2 + $rand_start, $view->style_plugin->rendered_fields[2]['counter']);
|
||||
}
|
||||
|
||||
// @TODO: Write tests for pager.
|
||||
function testPager() {
|
||||
}
|
||||
}
|
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerFieldCustomTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the core views_handler_field_custom handler.
|
||||
*/
|
||||
class ViewsHandlerFieldCustomTest extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Field: Custom',
|
||||
'description' => 'Test the core views_handler_field_custom handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
function viewsData() {
|
||||
$data = parent::viewsData();
|
||||
$data['views_test']['name']['field']['handler'] = 'views_handler_field_custom';
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function testFieldCustom() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Alter the text of the field to a random string.
|
||||
$random = $this->randomName();
|
||||
$view->display['default']->handler->override_option('fields', array(
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
'alter' => array(
|
||||
'text' => $random,
|
||||
),
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
$this->assertEqual($random, $view->style_plugin->get_field(0, 'name'));
|
||||
}
|
||||
}
|
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerFieldDateTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the core views_handler_field_date handler.
|
||||
*/
|
||||
class ViewsHandlerFieldDateTest extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Field: Date',
|
||||
'description' => 'Test the core views_handler_field_date handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
function viewsData() {
|
||||
$data = parent::viewsData();
|
||||
$data['views_test']['created']['field']['handler'] = 'views_handler_field_date';
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function testFieldDate() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
$view->display['default']->handler->override_option('fields', array(
|
||||
'created' => array(
|
||||
'id' => 'created',
|
||||
'table' => 'views_test',
|
||||
'field' => 'created',
|
||||
'relationship' => 'none',
|
||||
// c is iso 8601 date format @see http://php.net/manual/en/function.date.php
|
||||
'custom_date_format' => 'c',
|
||||
),
|
||||
));
|
||||
$time = gmmktime(0, 0, 0, 1, 1, 2000);
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
$timezones = array(
|
||||
NULL,
|
||||
'UTC',
|
||||
'America/New_York',
|
||||
);
|
||||
foreach ($timezones as $timezone) {
|
||||
$dates = array(
|
||||
'small' => format_date($time, 'small', '', $timezone),
|
||||
'medium' => format_date($time, 'medium', '', $timezone),
|
||||
'large' => format_date($time, 'large', '', $timezone),
|
||||
'custom' => format_date($time, 'custom', 'c', $timezone),
|
||||
);
|
||||
$this->assertRenderedDatesEqual($view, $dates, $timezone);
|
||||
}
|
||||
|
||||
$intervals = array(
|
||||
'raw time ago' => format_interval(REQUEST_TIME - $time, 2),
|
||||
'time ago' => t('%time ago', array('%time' => format_interval(REQUEST_TIME - $time, 2))),
|
||||
// TODO write tests for them
|
||||
// 'raw time span' => format_interval(REQUEST_TIME - $time, 2),
|
||||
// 'time span' => t('%time hence', array('%time' => format_interval(REQUEST_TIME - $time, 2))),
|
||||
);
|
||||
$this->assertRenderedDatesEqual($view, $intervals);
|
||||
}
|
||||
|
||||
protected function assertRenderedDatesEqual($view, $map, $timezone = NULL) {
|
||||
foreach ($map as $date_format => $expected_result) {
|
||||
$view->field['created']->options['date_format'] = $date_format;
|
||||
$t_args = array(
|
||||
'%value' => $expected_result,
|
||||
'%format' => $date_format,
|
||||
);
|
||||
if (isset($timezone)) {
|
||||
$t_args['%timezone'] = $timezone;
|
||||
$message = t('Value %value in %format format for timezone %timezone matches.', $t_args);
|
||||
$view->field['created']->options['timezone'] = $timezone;
|
||||
}
|
||||
else {
|
||||
$message = t('Value %value in %format format matches.', $t_args);
|
||||
}
|
||||
$actual_result = $view->field['created']->advanced_render($view->result[0]);
|
||||
$this->assertEqual($expected_result, $actual_result, $message);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerTestFileSize.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the core views_handler_field_file_size handler.
|
||||
*
|
||||
* @see CommonXssUnitTest
|
||||
*/
|
||||
class ViewsHandlerTestFileSize extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Field: file_size',
|
||||
'description' => 'Test the core views_handler_field_file_size handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
function dataSet() {
|
||||
$data = parent::dataSet();
|
||||
$data[0]['age'] = 0;
|
||||
$data[1]['age'] = 10;
|
||||
$data[2]['age'] = 1000;
|
||||
$data[3]['age'] = 10000;
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
function viewsData() {
|
||||
$data = parent::viewsData();
|
||||
$data['views_test']['age']['field']['handler'] = 'views_handler_field_file_size';
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function testFieldFileSize() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
$view->display['default']->handler->override_option('fields', array(
|
||||
'age' => array(
|
||||
'id' => 'age',
|
||||
'table' => 'views_test',
|
||||
'field' => 'age',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
// Test with the formatted option.
|
||||
$this->assertEqual($view->field['age']->advanced_render($view->result[0]), '');
|
||||
$this->assertEqual($view->field['age']->advanced_render($view->result[1]), '10 bytes');
|
||||
$this->assertEqual($view->field['age']->advanced_render($view->result[2]), '1000 bytes');
|
||||
$this->assertEqual($view->field['age']->advanced_render($view->result[3]), '9.77 KB');
|
||||
// Test with the bytes option.
|
||||
$view->field['age']->options['file_size_display'] = 'bytes';
|
||||
$this->assertEqual($view->field['age']->advanced_render($view->result[0]), '');
|
||||
$this->assertEqual($view->field['age']->advanced_render($view->result[1]), 10);
|
||||
$this->assertEqual($view->field['age']->advanced_render($view->result[2]), 1000);
|
||||
$this->assertEqual($view->field['age']->advanced_render($view->result[3]), 10000);
|
||||
}
|
||||
}
|
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerFieldMath.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the core views_handler_field_math handler.
|
||||
*/
|
||||
class ViewsHandlerFieldMath extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Field: Math',
|
||||
'description' => 'Test the core views_handler_field_math handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
function viewsData() {
|
||||
$data = parent::viewsData();
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function testFieldCustom() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Alter the text of the field to a random string.
|
||||
$rand1 = rand(0, 100);
|
||||
$rand2 = rand(0, 100);
|
||||
$view->display['default']->handler->override_option('fields', array(
|
||||
'expression' => array(
|
||||
'id' => 'expression',
|
||||
'table' => 'views',
|
||||
'field' => 'expression',
|
||||
'relationship' => 'none',
|
||||
'expression' => $rand1 . ' + ' . $rand2,
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
$this->assertEqual($rand1 + $rand2, $view->style_plugin->get_field(0, 'expression'));
|
||||
}
|
||||
}
|
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerFieldUrlTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the core views_handler_field_url handler.
|
||||
*/
|
||||
class ViewsHandlerFieldUrlTest extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Field: Url',
|
||||
'description' => 'Test the core views_handler_field_url handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
function viewsData() {
|
||||
$data = parent::viewsData();
|
||||
$data['views_test']['name']['field']['handler'] = 'views_handler_field_url';
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function testFieldUrl() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
$view->display['default']->handler->override_option('fields', array(
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
'display_as_link' => FALSE,
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
$this->assertEqual('John', $view->field['name']->advanced_render($view->result[0]));
|
||||
|
||||
// Make the url a link.
|
||||
$view->delete();
|
||||
$view = $this->getBasicView();
|
||||
|
||||
$view->display['default']->handler->override_option('fields', array(
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
$this->assertEqual(l('John', 'John'), $view->field['name']->advanced_render($view->result[0]));
|
||||
}
|
||||
}
|
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerTestXss.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the core views_handler_field_css handler.
|
||||
*
|
||||
* @see CommonXssUnitTest
|
||||
*/
|
||||
class ViewsHandlerTestXss extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Field: Xss',
|
||||
'description' => 'Test the core views_handler_field_css handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
function dataHelper() {
|
||||
$map = array(
|
||||
'John' => 'John',
|
||||
"Foo\xC0barbaz" => '',
|
||||
'Fooÿñ' => 'Fooÿñ'
|
||||
);
|
||||
|
||||
return $map;
|
||||
}
|
||||
|
||||
|
||||
function viewsData() {
|
||||
$data = parent::viewsData();
|
||||
$data['views_test']['name']['field']['handler'] = 'views_handler_field_xss';
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function testFieldXss() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
$view->display['default']->handler->override_option('fields', array(
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
$counter = 0;
|
||||
foreach ($this->dataHelper() as $input => $expected_result) {
|
||||
$view->result[$counter]->views_test_name = $input;
|
||||
$this->assertEqual($view->field['name']->advanced_render($view->result[$counter]), $expected_result);
|
||||
$counter++;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerFilterCombineTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the combine filter handler.
|
||||
*/
|
||||
class ViewsHandlerFilterCombineTest extends ViewsSqlTest {
|
||||
var $column_map = array();
|
||||
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Filter: Combine',
|
||||
'description' => 'Tests the combine filter handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
function setUp() {
|
||||
parent::setUp();
|
||||
$this->column_map = array(
|
||||
'views_test_name' => 'name',
|
||||
'views_test_job' => 'job',
|
||||
);
|
||||
}
|
||||
|
||||
protected function getBasicView() {
|
||||
$view = parent::getBasicView();
|
||||
$fields = $view->display['default']->handler->options['fields'];
|
||||
$view->display['default']->display_options['fields']['job'] = array(
|
||||
'id' => 'job',
|
||||
'table' => 'views_test',
|
||||
'field' => 'job',
|
||||
'relationship' => 'none',
|
||||
);
|
||||
return $view;
|
||||
}
|
||||
|
||||
public function testFilterCombineContains() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering.
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'age' => array(
|
||||
'id' => 'combine',
|
||||
'table' => 'views',
|
||||
'field' => 'combine',
|
||||
'relationship' => 'none',
|
||||
'operator' => 'contains',
|
||||
'fields' => array(
|
||||
'name',
|
||||
'job',
|
||||
),
|
||||
'value' => 'ing',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'John',
|
||||
'job' => 'Singer',
|
||||
),
|
||||
array(
|
||||
'name' => 'George',
|
||||
'job' => 'Singer',
|
||||
),
|
||||
array(
|
||||
'name' => 'Ringo',
|
||||
'job' => 'Drummer',
|
||||
),
|
||||
array(
|
||||
'name' => 'Ginger',
|
||||
'job' => NULL,
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
/**
|
||||
* Additional data to test the NULL issue.
|
||||
*/
|
||||
protected function dataSet() {
|
||||
$data_set = parent::dataSet();
|
||||
$data_set[] = array(
|
||||
'name' => 'Ginger',
|
||||
'age' => 25,
|
||||
'job' => NULL,
|
||||
'created' => gmmktime(0, 0, 0, 1, 2, 2000),
|
||||
);
|
||||
return $data_set;
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow {views_test}.job to be NULL.
|
||||
*/
|
||||
protected function schemaDefinition() {
|
||||
$schema = parent::schemaDefinition();
|
||||
unset($schema['views_test']['fields']['job']['not null']);
|
||||
return $schema;
|
||||
}
|
||||
}
|
@@ -0,0 +1,190 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerFilterDateTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the core views_handler_filter_date handler.
|
||||
*/
|
||||
class ViewsHandlerFilterDateTest extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Filter: Date',
|
||||
'description' => 'Test the core views_handler_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',
|
||||
);
|
||||
$this->enableViewsUi();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the general offset functionality.
|
||||
*/
|
||||
function testOffset() {
|
||||
$view = $this->views_test_offset();
|
||||
// Test offset for simple operator.
|
||||
$view->set_display('default');
|
||||
$view->init_handlers();
|
||||
$view->filter['created']->operator = '>';
|
||||
$view->filter['created']->value['type'] = 'offset';
|
||||
$view->filter['created']->value['value'] = '+1 hour';
|
||||
$view->execute_display('default');
|
||||
$expected_result = array(
|
||||
array('nid' => $this->nodes[3]->nid),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $expected_result, $this->map);
|
||||
$view->destroy();
|
||||
|
||||
// Test offset for between operator.
|
||||
$view->set_display('default');
|
||||
$view->init_handlers();
|
||||
$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';
|
||||
$view->execute_display('default');
|
||||
$expected_result = array(
|
||||
array('nid' => $this->nodes[3]->nid),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $expected_result, $this->map);
|
||||
$view->destroy();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Tests the filter operator between/not between.
|
||||
*/
|
||||
function testBetween() {
|
||||
// Test between with min and max.
|
||||
$view = $this->views_test_between();
|
||||
$view->set_display('default');
|
||||
$view->init_handlers();
|
||||
$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');
|
||||
$view->execute_display('default');
|
||||
$expected_result = array(
|
||||
array('nid' => $this->nodes[1]->nid),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $expected_result, $this->map);
|
||||
$view->destroy();
|
||||
|
||||
// Test between with just max.
|
||||
$view = $this->views_test_between();
|
||||
$view->set_display('default');
|
||||
$view->init_handlers();
|
||||
$view->filter['created']->operator = 'between';
|
||||
$view->filter['created']->value['max'] = format_date(250000, 'custom', 'Y-m-d H:s');
|
||||
$view->execute_display('default');
|
||||
$expected_result = array(
|
||||
array('nid' => $this->nodes[0]->nid),
|
||||
array('nid' => $this->nodes[1]->nid),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $expected_result, $this->map);
|
||||
$view->destroy();
|
||||
|
||||
// Test not between with min and max.
|
||||
$view = $this->views_test_between();
|
||||
$view->set_display('default');
|
||||
$view->init_handlers();
|
||||
$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');
|
||||
$view->execute_display('default');
|
||||
$expected_result = array(
|
||||
array('nid' => $this->nodes[0]->nid),
|
||||
array('nid' => $this->nodes[2]->nid),
|
||||
array('nid' => $this->nodes[3]->nid),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $expected_result, $this->map);
|
||||
$view->destroy();
|
||||
|
||||
// Test not between with just max.
|
||||
$view = $this->views_test_between();
|
||||
$view->set_display('default');
|
||||
$view->init_handlers();
|
||||
$view->filter['created']->operator = 'not between';
|
||||
$view->filter['created']->value['max'] = format_date(150000, 'custom', 'Y-m-d H:s');
|
||||
$view->execute_display('default');
|
||||
$expected_result = array(
|
||||
array('nid' => $this->nodes[1]->nid),
|
||||
array('nid' => $this->nodes[2]->nid),
|
||||
array('nid' => $this->nodes[3]->nid),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $expected_result, $this->map);
|
||||
$view->destroy();
|
||||
}
|
||||
|
||||
/**
|
||||
* Make sure the validation callbacks works.
|
||||
*/
|
||||
function testUiValidation() {
|
||||
$view = $this->views_test_between();
|
||||
$view->save();
|
||||
|
||||
$admin_user = $this->drupalCreateUser(array('administer views', 'administer site configuration'));
|
||||
$this->drupalLogin($admin_user);
|
||||
menu_rebuild();
|
||||
$this->drupalGet('admin/structure/views/view/test_filter_date_between/edit');
|
||||
$this->drupalGet('admin/structure/views/nojs/config-item/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->drupalPost(NULL, $edit, t('Apply'));
|
||||
$this->assertText(t('Invalid date format.'), 'Make sure that validation is runned and the invalidate date format is identified.');
|
||||
}
|
||||
|
||||
function views_test_between() {
|
||||
$view = new view;
|
||||
$view->name = 'test_filter_date_between';
|
||||
$view->description = '';
|
||||
$view->tag = '';
|
||||
$view->base_table = 'node';
|
||||
$view->human_name = '';
|
||||
$view->core = 0;
|
||||
$view->api_version = '3.0';
|
||||
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
|
||||
|
||||
/* Display: Master */
|
||||
$handler = $view->new_display('default', 'Master', 'default');
|
||||
$handler->display->display_options['access']['type'] = 'none';
|
||||
$handler->display->display_options['cache']['type'] = 'none';
|
||||
$handler->display->display_options['query']['type'] = 'views_query';
|
||||
$handler->display->display_options['query']['options']['query_comment'] = FALSE;
|
||||
$handler->display->display_options['exposed_form']['type'] = 'basic';
|
||||
$handler->display->display_options['pager']['type'] = 'full';
|
||||
$handler->display->display_options['style_plugin'] = 'default';
|
||||
$handler->display->display_options['row_plugin'] = 'fields';
|
||||
/* Field: Content: Nid */
|
||||
$handler->display->display_options['fields']['nid']['id'] = 'nid';
|
||||
$handler->display->display_options['fields']['nid']['table'] = 'node';
|
||||
$handler->display->display_options['fields']['nid']['field'] = 'nid';
|
||||
/* Filter criterion: Content: Post date */
|
||||
$handler->display->display_options['filters']['created']['id'] = 'created';
|
||||
$handler->display->display_options['filters']['created']['table'] = 'node';
|
||||
$handler->display->display_options['filters']['created']['field'] = 'created';
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
function views_test_offset() {
|
||||
$view = $this->views_test_between();
|
||||
return $view;
|
||||
}
|
||||
}
|
@@ -0,0 +1,173 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerFilterEqualityTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the core views_handler_filter_equality handler.
|
||||
*/
|
||||
class ViewsHandlerFilterEqualityTest extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Filter: Equality',
|
||||
'description' => 'Test the core views_handler_filter_equality handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
function setUp() {
|
||||
parent::setUp();
|
||||
$this->column_map = array(
|
||||
'views_test_name' => 'name',
|
||||
);
|
||||
}
|
||||
|
||||
function viewsData() {
|
||||
$data = parent::viewsData();
|
||||
$data['views_test']['name']['filter']['handler'] = 'views_handler_filter_equality';
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
function testEqual() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
'operator' => '=',
|
||||
'value' => array('value' => 'Ringo'),
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'Ringo',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
public function testEqualGroupedExposed() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Name, Operator: =, Value: Ringo
|
||||
$filters['name']['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',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testNotEqual() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
'operator' => '!=',
|
||||
'value' => array('value' => 'Ringo'),
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'John',
|
||||
),
|
||||
array(
|
||||
'name' => 'George',
|
||||
),
|
||||
array(
|
||||
'name' => 'Paul',
|
||||
),
|
||||
array(
|
||||
'name' => 'Meredith',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
public function testEqualGroupedNotExposed() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Name, Operator: !=, Value: Ringo
|
||||
$filters['name']['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' => 'John',
|
||||
),
|
||||
array(
|
||||
'name' => 'George',
|
||||
),
|
||||
array(
|
||||
'name' => 'Paul',
|
||||
),
|
||||
array(
|
||||
'name' => 'Meredith',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
|
||||
protected function getGroupedExposedFilters() {
|
||||
$filters = array(
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
'exposed' => TRUE,
|
||||
'expose' => array(
|
||||
'operator' => 'name_op',
|
||||
'label' => 'name',
|
||||
'identifier' => 'name',
|
||||
),
|
||||
'is_grouped' => TRUE,
|
||||
'group_info' => array(
|
||||
'label' => 'name',
|
||||
'identifier' => 'name',
|
||||
'default_group' => 'All',
|
||||
'group_items' => array(
|
||||
1 => array(
|
||||
'title' => 'Name is equal to Ringo',
|
||||
'operator' => '=',
|
||||
'value' => array('value' => 'Ringo'),
|
||||
),
|
||||
2 => array(
|
||||
'title' => 'Name is not equal to Ringo',
|
||||
'operator' => '!=',
|
||||
'value' => array('value' => 'Ringo'),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
return $filters;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,196 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerFilterInOperator.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the core views_handler_filter_in_operator handler.
|
||||
*/
|
||||
class ViewsHandlerFilterInOperator extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Filter: in_operator',
|
||||
'description' => 'Test the core views_handler_filter_in_operator handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
function viewsData() {
|
||||
$data = parent::viewsData();
|
||||
$data['views_test']['age']['filter']['handler'] = 'views_handler_filter_in_operator';
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function testFilterInOperatorSimple() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Add a in_operator ordering.
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'age' => array(
|
||||
'id' => 'age',
|
||||
'field' => 'age',
|
||||
'table' => 'views_test',
|
||||
'value' => array(26, 30),
|
||||
'operator' => 'in',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
$expected_result = array(
|
||||
array(
|
||||
'name' => 'Paul',
|
||||
'age' => 26,
|
||||
),
|
||||
array(
|
||||
'name' => 'Meredith',
|
||||
'age' => 30,
|
||||
),
|
||||
);
|
||||
|
||||
$this->assertEqual(2, count($view->result));
|
||||
$this->assertIdenticalResultset($view, $expected_result, array(
|
||||
'views_test_name' => 'name',
|
||||
'views_test_age' => 'age',
|
||||
));
|
||||
|
||||
$view->delete();
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Add a in_operator ordering.
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'age' => array(
|
||||
'id' => 'age',
|
||||
'field' => 'age',
|
||||
'table' => 'views_test',
|
||||
'value' => array(26, 30),
|
||||
'operator' => 'not in',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
$expected_result = array(
|
||||
array(
|
||||
'name' => 'John',
|
||||
'age' => 25,
|
||||
),
|
||||
array(
|
||||
'name' => 'George',
|
||||
'age' => 27,
|
||||
),
|
||||
array(
|
||||
'name' => 'Ringo',
|
||||
'age' => 28,
|
||||
),
|
||||
);
|
||||
|
||||
$this->assertEqual(3, count($view->result));
|
||||
$this->assertIdenticalResultset($view, $expected_result, array(
|
||||
'views_test_name' => 'name',
|
||||
'views_test_age' => 'age',
|
||||
));
|
||||
}
|
||||
|
||||
public function testFilterInOperatorGroupedExposedSimple() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Age, Operator: in, Value: 26, 30
|
||||
$filters['age']['group_info']['default_group'] = 1;
|
||||
$view->set_display('page_1');
|
||||
$view->display['page_1']->handler->override_option('filters', $filters);
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
$expected_result = array(
|
||||
array(
|
||||
'name' => 'Paul',
|
||||
'age' => 26,
|
||||
),
|
||||
array(
|
||||
'name' => 'Meredith',
|
||||
'age' => 30,
|
||||
),
|
||||
);
|
||||
|
||||
$this->assertEqual(2, count($view->result));
|
||||
$this->assertIdenticalResultset($view, $expected_result, array(
|
||||
'views_test_name' => 'name',
|
||||
'views_test_age' => 'age',
|
||||
));
|
||||
}
|
||||
|
||||
public function testFilterNotInOperatorGroupedExposedSimple() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Age, Operator: in, Value: 26, 30
|
||||
$filters['age']['group_info']['default_group'] = 2;
|
||||
$view->set_display('page_1');
|
||||
$view->display['page_1']->handler->override_option('filters', $filters);
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
$expected_result = array(
|
||||
array(
|
||||
'name' => 'John',
|
||||
'age' => 25,
|
||||
),
|
||||
array(
|
||||
'name' => 'George',
|
||||
'age' => 27,
|
||||
),
|
||||
array(
|
||||
'name' => 'Ringo',
|
||||
'age' => 28,
|
||||
),
|
||||
);
|
||||
|
||||
$this->assertEqual(3, count($view->result));
|
||||
$this->assertIdenticalResultset($view, $expected_result, array(
|
||||
'views_test_name' => 'name',
|
||||
'views_test_age' => 'age',
|
||||
));
|
||||
}
|
||||
|
||||
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 one of 26, 30',
|
||||
'operator' => 'in',
|
||||
'value' => array(26, 30),
|
||||
),
|
||||
2 => array(
|
||||
'title' => 'Age is not one of 26, 30',
|
||||
'operator' => 'not in',
|
||||
'value' => array(26, 30),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
return $filters;
|
||||
}
|
||||
|
||||
}
|
@@ -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;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,810 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerFilterStringTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests the core views_handler_filter_string handler.
|
||||
*/
|
||||
class ViewsHandlerFilterStringTest extends ViewsSqlTest {
|
||||
var $column_map = array();
|
||||
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Filter: String',
|
||||
'description' => 'Tests the core views_handler_filter_string handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
function setUp() {
|
||||
parent::setUp();
|
||||
$this->column_map = array(
|
||||
'views_test_name' => 'name',
|
||||
);
|
||||
}
|
||||
|
||||
function viewsData() {
|
||||
$data = parent::viewsData();
|
||||
$data['views_test']['name']['filter']['allow empty'] = TRUE;
|
||||
$data['views_test']['job']['filter']['allow empty'] = FALSE;
|
||||
$data['views_test']['description'] = $data['views_test']['name'];
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
protected function schemaDefinition() {
|
||||
$schema = parent::schemaDefinition();
|
||||
$schema['views_test']['fields']['description'] = array(
|
||||
'description' => "A person's description",
|
||||
'type' => 'text',
|
||||
'not null' => FALSE,
|
||||
'size' => 'big',
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
||||
/**
|
||||
* An extended test dataset.
|
||||
*/
|
||||
protected function dataSet() {
|
||||
$dataset = parent::dataSet();
|
||||
$dataset[0]['description'] = 'John Winston Ono Lennon, MBE (9 October 1940 – 8 December 1980) was an English musician and singer-songwriter who rose to worldwide fame as one of the founding members of The Beatles, one of the most commercially successful and critically acclaimed acts in the history of popular music. Along with fellow Beatle Paul McCartney, he formed one of the most successful songwriting partnerships of the 20th century.';
|
||||
$dataset[1]['description'] = 'George Harrison,[1] MBE (25 February 1943 – 29 November 2001)[2] was an English rock guitarist, singer-songwriter, actor and film producer who achieved international fame as lead guitarist of The Beatles.';
|
||||
$dataset[2]['description'] = 'Richard Starkey, MBE (born 7 July 1940), better known by his stage name Ringo Starr, is an English musician, singer-songwriter, and actor who gained worldwide fame as the drummer for The Beatles.';
|
||||
$dataset[3]['description'] = 'Sir James Paul McCartney, MBE (born 18 June 1942) is an English musician, singer-songwriter and composer. Formerly of The Beatles (1960–1970) and Wings (1971–1981), McCartney is the most commercially successful songwriter in the history of popular music, according to Guinness World Records.[1]';
|
||||
$dataset[4]['description'] = NULL;
|
||||
|
||||
return $dataset;
|
||||
}
|
||||
|
||||
protected function getBasicView() {
|
||||
$view = parent::getBasicView();
|
||||
$view->display['default']->options['fields']['description'] = array(
|
||||
'id' => 'description',
|
||||
'table' => 'views_test',
|
||||
'field' => 'description',
|
||||
'relationship' => 'none',
|
||||
);
|
||||
return $view;
|
||||
}
|
||||
|
||||
function testFilterStringEqual() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
'operator' => '=',
|
||||
'value' => 'Ringo',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'Ringo',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringGroupedExposedEqual() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Name, Operator: =, Value: Ringo
|
||||
$filters['name']['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',
|
||||
),
|
||||
);
|
||||
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringNotEqual() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
'operator' => '!=',
|
||||
'value' => array('value' => 'Ringo'),
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'John',
|
||||
),
|
||||
array(
|
||||
'name' => 'George',
|
||||
),
|
||||
array(
|
||||
'name' => 'Paul',
|
||||
),
|
||||
array(
|
||||
'name' => 'Meredith',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringGroupedExposedNotEqual() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Name, Operator: !=, Value: Ringo
|
||||
$filters['name']['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' => 'John',
|
||||
),
|
||||
array(
|
||||
'name' => 'George',
|
||||
),
|
||||
array(
|
||||
'name' => 'Paul',
|
||||
),
|
||||
array(
|
||||
'name' => 'Meredith',
|
||||
),
|
||||
);
|
||||
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringContains() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
'operator' => 'contains',
|
||||
'value' => 'ing',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'Ringo',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
|
||||
function testFilterStringGroupedExposedContains() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Name, Operator: contains, Value: ing
|
||||
$filters['name']['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' => 'Ringo',
|
||||
),
|
||||
);
|
||||
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
|
||||
function testFilterStringWord() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'description' => array(
|
||||
'id' => 'description',
|
||||
'table' => 'views_test',
|
||||
'field' => 'description',
|
||||
'relationship' => 'none',
|
||||
'operator' => 'word',
|
||||
'value' => 'actor',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'George',
|
||||
),
|
||||
array(
|
||||
'name' => 'Ringo',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
$view->destroy();
|
||||
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'description' => array(
|
||||
'id' => 'description',
|
||||
'table' => 'views_test',
|
||||
'field' => 'description',
|
||||
'relationship' => 'none',
|
||||
'operator' => 'allwords',
|
||||
'value' => 'Richard Starkey',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'Ringo',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
|
||||
function testFilterStringGroupedExposedWord() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Name, Operator: contains, Value: ing
|
||||
$filters['name']['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' => 'Ringo',
|
||||
),
|
||||
);
|
||||
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
$view->destroy();
|
||||
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Description, Operator: contains, Value: actor
|
||||
$filters['description']['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' => 'George',
|
||||
),
|
||||
array(
|
||||
'name' => 'Ringo',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringStarts() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'description' => array(
|
||||
'id' => 'description',
|
||||
'table' => 'views_test',
|
||||
'field' => 'description',
|
||||
'relationship' => 'none',
|
||||
'operator' => 'starts',
|
||||
'value' => 'George',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'George',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringGroupedExposedStarts() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Name, Operator: starts, Value: George
|
||||
$filters['description']['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',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringNotStarts() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'description' => array(
|
||||
'id' => 'description',
|
||||
'table' => 'views_test',
|
||||
'field' => 'description',
|
||||
'relationship' => 'none',
|
||||
'operator' => 'not_starts',
|
||||
'value' => 'George',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'John',
|
||||
),
|
||||
array(
|
||||
'name' => 'Ringo',
|
||||
),
|
||||
array(
|
||||
'name' => 'Paul',
|
||||
),
|
||||
// There is no Meredith returned because his description is empty
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringGroupedExposedNotStarts() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Name, Operator: not_starts, Value: George
|
||||
$filters['description']['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',
|
||||
),
|
||||
array(
|
||||
'name' => 'Ringo',
|
||||
),
|
||||
array(
|
||||
'name' => 'Paul',
|
||||
),
|
||||
// There is no Meredith returned because his description is empty
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringEnds() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'description' => array(
|
||||
'id' => 'description',
|
||||
'table' => 'views_test',
|
||||
'field' => 'description',
|
||||
'relationship' => 'none',
|
||||
'operator' => 'ends',
|
||||
'value' => 'Beatles.',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'George',
|
||||
),
|
||||
array(
|
||||
'name' => 'Ringo',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringGroupedExposedEnds() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Descriptino, Operator: ends, Value: Beatles
|
||||
$filters['description']['group_info']['default_group'] = 4;
|
||||
$view->set_display('page_1');
|
||||
$view->display['page_1']->handler->override_option('filters', $filters);
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'George',
|
||||
),
|
||||
array(
|
||||
'name' => 'Ringo',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringNotEnds() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'description' => array(
|
||||
'id' => 'description',
|
||||
'table' => 'views_test',
|
||||
'field' => 'description',
|
||||
'relationship' => 'none',
|
||||
'operator' => 'not_ends',
|
||||
'value' => 'Beatles.',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'John',
|
||||
),
|
||||
array(
|
||||
'name' => 'Paul',
|
||||
),
|
||||
// There is no Meredith returned because his description is empty
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringGroupedExposedNotEnds() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Description, Operator: not_ends, Value: Beatles
|
||||
$filters['description']['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',
|
||||
),
|
||||
array(
|
||||
'name' => 'Paul',
|
||||
),
|
||||
// There is no Meredith returned because his description is empty
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringNot() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'description' => array(
|
||||
'id' => 'description',
|
||||
'table' => 'views_test',
|
||||
'field' => 'description',
|
||||
'relationship' => 'none',
|
||||
'operator' => 'not',
|
||||
'value' => 'Beatles.',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'John',
|
||||
),
|
||||
array(
|
||||
'name' => 'Paul',
|
||||
),
|
||||
// There is no Meredith returned because his description is empty
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
|
||||
function testFilterStringGroupedExposedNot() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Description, Operator: not (does not contains), Value: Beatles
|
||||
$filters['description']['group_info']['default_group'] = 6;
|
||||
$view->set_display('page_1');
|
||||
$view->display['page_1']->handler->override_option('filters', $filters);
|
||||
|
||||
$this->executeView($view);
|
||||
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'John',
|
||||
),
|
||||
array(
|
||||
'name' => 'Paul',
|
||||
),
|
||||
// There is no Meredith returned because his description is empty
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
|
||||
}
|
||||
|
||||
function testFilterStringShorter() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
'operator' => 'shorterthan',
|
||||
'value' => 5,
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'John',
|
||||
),
|
||||
array(
|
||||
'name' => 'Paul',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringGroupedExposedShorter() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Name, Operator: shorterthan, Value: 5
|
||||
$filters['name']['group_info']['default_group'] = 4;
|
||||
$view->set_display('page_1');
|
||||
$view->display['page_1']->handler->override_option('filters', $filters);
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'John',
|
||||
),
|
||||
array(
|
||||
'name' => 'Paul',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringLonger() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
'operator' => 'longerthan',
|
||||
'value' => 7,
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'Meredith',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringGroupedExposedLonger() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Name, Operator: longerthan, Value: 4
|
||||
$filters['name']['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' => 'Meredith',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
|
||||
function testFilterStringEmpty() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the filtering
|
||||
$view->display['default']->handler->override_option('filters', array(
|
||||
'description' => array(
|
||||
'id' => 'description',
|
||||
'table' => 'views_test',
|
||||
'field' => 'description',
|
||||
'relationship' => 'none',
|
||||
'operator' => 'empty',
|
||||
),
|
||||
));
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'Meredith',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
function testFilterStringGroupedExposedEmpty() {
|
||||
$filters = $this->getGroupedExposedFilters();
|
||||
$view = $this->getBasicPageView();
|
||||
|
||||
// Filter: Description, Operator: empty, Value:
|
||||
$filters['description']['group_info']['default_group'] = 7;
|
||||
$view->set_display('page_1');
|
||||
$view->display['page_1']->handler->override_option('filters', $filters);
|
||||
|
||||
$this->executeView($view);
|
||||
$resultset = array(
|
||||
array(
|
||||
'name' => 'Meredith',
|
||||
),
|
||||
);
|
||||
$this->assertIdenticalResultset($view, $resultset, $this->column_map);
|
||||
}
|
||||
|
||||
protected function getGroupedExposedFilters() {
|
||||
$filters = array(
|
||||
'name' => array(
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
'exposed' => TRUE,
|
||||
'expose' => array(
|
||||
'operator' => 'name_op',
|
||||
'label' => 'name',
|
||||
'identifier' => 'name',
|
||||
),
|
||||
'is_grouped' => TRUE,
|
||||
'group_info' => array(
|
||||
'label' => 'name',
|
||||
'identifier' => 'name',
|
||||
'default_group' => 'All',
|
||||
'group_items' => array(
|
||||
1 => array(
|
||||
'title' => 'Is Ringo',
|
||||
'operator' => '=',
|
||||
'value' => 'Ringo',
|
||||
),
|
||||
2 => array(
|
||||
'title' => 'Is not Ringo',
|
||||
'operator' => '!=',
|
||||
'value' => array('value' => 'Ringo'),
|
||||
),
|
||||
3 => array(
|
||||
'title' => 'Contains ing',
|
||||
'operator' => 'contains',
|
||||
'value' => 'ing',
|
||||
),
|
||||
4 => array(
|
||||
'title' => 'Shorter than 5 letters',
|
||||
'operator' => 'shorterthan',
|
||||
'value' => 5,
|
||||
),
|
||||
5 => array(
|
||||
'title' => 'Longer than 7 letters',
|
||||
'operator' => 'longerthan',
|
||||
'value' => 7,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
'description' => array(
|
||||
'id' => 'description',
|
||||
'table' => 'views_test',
|
||||
'field' => 'description',
|
||||
'relationship' => 'none',
|
||||
'exposed' => TRUE,
|
||||
'expose' => array(
|
||||
'operator' => 'description_op',
|
||||
'label' => 'description',
|
||||
'identifier' => 'description',
|
||||
),
|
||||
'is_grouped' => TRUE,
|
||||
'group_info' => array(
|
||||
'label' => 'description',
|
||||
'identifier' => 'description',
|
||||
'default_group' => 'All',
|
||||
'group_items' => array(
|
||||
1 => array(
|
||||
'title' => 'Contains the word: Actor',
|
||||
'operator' => 'word',
|
||||
'value' => 'actor',
|
||||
),
|
||||
2 => array(
|
||||
'title' => 'Starts with George',
|
||||
'operator' => 'starts',
|
||||
'value' => 'George',
|
||||
),
|
||||
3 => array(
|
||||
'title' => 'Not Starts with: George',
|
||||
'operator' => 'not_starts',
|
||||
'value' => 'George',
|
||||
),
|
||||
4 => array(
|
||||
'title' => 'Ends with: Beatles',
|
||||
'operator' => 'ends',
|
||||
'value' => 'Beatles.',
|
||||
),
|
||||
5 => array(
|
||||
'title' => 'Not Ends with: Beatles',
|
||||
'operator' => 'not_ends',
|
||||
'value' => 'Beatles.',
|
||||
),
|
||||
6 => array(
|
||||
'title' => 'Does not contain: Beatles',
|
||||
'operator' => 'not',
|
||||
'value' => 'Beatles.',
|
||||
),
|
||||
7 => array(
|
||||
'title' => 'Empty description',
|
||||
'operator' => 'empty',
|
||||
'value' => '',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
return $filters;
|
||||
}
|
||||
|
||||
}
|
121
sites/all/modules/views/tests/handlers/views_handler_sort.test
Normal file
121
sites/all/modules/views/tests/handlers/views_handler_sort.test
Normal file
@@ -0,0 +1,121 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerSortTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests for core views_handler_sort handler.
|
||||
*/
|
||||
class ViewsHandlerSortTest extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Sort: generic',
|
||||
'description' => 'Test the core views_handler_sort handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests numeric ordering of the result set.
|
||||
*/
|
||||
public function testNumericOrdering() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the ordering
|
||||
$view->display['default']->handler->override_option('sorts', array(
|
||||
'age' => array(
|
||||
'order' => 'ASC',
|
||||
'id' => 'age',
|
||||
'table' => 'views_test',
|
||||
'field' => 'age',
|
||||
'relationship' => 'none',
|
||||
),
|
||||
));
|
||||
|
||||
// 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->orderResultSet($this->dataSet(), 'age'), array(
|
||||
'views_test_name' => 'name',
|
||||
'views_test_age' => 'age',
|
||||
));
|
||||
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Reverse the ordering
|
||||
$view->display['default']->handler->override_option('sorts', array(
|
||||
'age' => array(
|
||||
'order' => 'DESC',
|
||||
'id' => 'age',
|
||||
'table' => 'views_test',
|
||||
'field' => 'age',
|
||||
'relationship' => 'none',
|
||||
),
|
||||
));
|
||||
|
||||
// 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->orderResultSet($this->dataSet(), 'age', TRUE), array(
|
||||
'views_test_name' => 'name',
|
||||
'views_test_age' => 'age',
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests string ordering of the result set.
|
||||
*/
|
||||
public function testStringOrdering() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Change the ordering
|
||||
$view->display['default']->handler->override_option('sorts', array(
|
||||
'name' => array(
|
||||
'order' => 'ASC',
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
),
|
||||
));
|
||||
|
||||
// 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->orderResultSet($this->dataSet(), 'name'), array(
|
||||
'views_test_name' => 'name',
|
||||
'views_test_age' => 'age',
|
||||
));
|
||||
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Reverse the ordering
|
||||
$view->display['default']->handler->override_option('sorts', array(
|
||||
'name' => array(
|
||||
'order' => 'DESC',
|
||||
'id' => 'name',
|
||||
'table' => 'views_test',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
),
|
||||
));
|
||||
|
||||
// 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->orderResultSet($this->dataSet(), 'name', TRUE), array(
|
||||
'views_test_name' => 'name',
|
||||
'views_test_age' => 'age',
|
||||
));
|
||||
}
|
||||
}
|
@@ -0,0 +1,198 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerSortDateTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests for core views_handler_sort_date handler.
|
||||
*/
|
||||
class ViewsHandlerSortDateTest extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => '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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of ViewsHandlerSortRandomTest.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests for core views_handler_sort_random handler.
|
||||
*/
|
||||
class ViewsHandlerSortRandomTest extends ViewsSqlTest {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Sort: random',
|
||||
'description' => 'Test the core views_handler_sort_random handler.',
|
||||
'group' => 'Views Handlers',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add more items to the test set, to make the order tests more robust.
|
||||
*/
|
||||
protected function dataSet() {
|
||||
$data = parent::dataSet();
|
||||
for ($i = 0; $i < 50; $i++) {
|
||||
$data[] = array(
|
||||
'name' => 'name_' . $i,
|
||||
'age' => $i,
|
||||
'job' => 'job_' . $i,
|
||||
'created' => rand(0, time()),
|
||||
);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a basic view with random ordering.
|
||||
*/
|
||||
protected function getBasicRandomView() {
|
||||
$view = $this->getBasicView();
|
||||
|
||||
// Add a random ordering.
|
||||
$view->display['default']->handler->override_option('sorts', array(
|
||||
'random' => array(
|
||||
'id' => 'random',
|
||||
'field' => 'random',
|
||||
'table' => 'views',
|
||||
),
|
||||
));
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests random ordering of the result set.
|
||||
*
|
||||
* @see DatabaseSelectTestCase::testRandomOrder()
|
||||
*/
|
||||
public function testRandomOrdering() {
|
||||
// Execute a basic view first.
|
||||
$view = $this->getBasicView();
|
||||
$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->dataSet(), array(
|
||||
'views_test_name' => 'name',
|
||||
'views_test_age' => 'age',
|
||||
));
|
||||
|
||||
// Execute a random view, we expect the result set to be different.
|
||||
$view_random = $this->getBasicRandomView();
|
||||
$this->executeView($view_random);
|
||||
$this->assertEqual(count($this->dataSet()), count($view_random->result), t('The number of returned rows match.'));
|
||||
$this->assertNotIdenticalResultset($view_random, $view->result, array(
|
||||
'views_test_name' => 'views_test_name',
|
||||
'views_test_age' => 'views_test_name',
|
||||
));
|
||||
|
||||
// Execute a second random view, we expect the result set to be different again.
|
||||
$view_random_2 = $this->getBasicRandomView();
|
||||
$this->executeView($view_random_2);
|
||||
$this->assertEqual(count($this->dataSet()), count($view_random_2->result), t('The number of returned rows match.'));
|
||||
$this->assertNotIdenticalResultset($view_random, $view->result, array(
|
||||
'views_test_name' => 'views_test_name',
|
||||
'views_test_age' => 'views_test_name',
|
||||
));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user