diff options
Diffstat (limited to 'sites/all/modules/views/tests/handlers/views_handler_field_boolean.test')
-rw-r--r-- | sites/all/modules/views/tests/handlers/views_handler_field_boolean.test | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/sites/all/modules/views/tests/handlers/views_handler_field_boolean.test b/sites/all/modules/views/tests/handlers/views_handler_field_boolean.test new file mode 100644 index 000000000..286b9425c --- /dev/null +++ b/sites/all/modules/views/tests/handlers/views_handler_field_boolean.test @@ -0,0 +1,108 @@ +<?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 programmatically. + $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])); + + // Set a custom output format through the UI using plain-text inputs. + $view->field['age']->options['type'] = 'custom'; + $values = array( + 'false' => 'Nay', + 'true' => 'Yay', + ); + $view->field['age']->options['type_custom_false'] = $values['false']; + $view->field['age']->options['type_custom_true'] = $values['true']; + $this->assertEqual($values['false'], $view->field['age']->advanced_render($view->result[0])); + $this->assertEqual($values['true'], $view->field['age']->advanced_render($view->result[1])); + + // Set a custom output format through the UI using valid HTML inputs. + $view->field['age']->options['type'] = 'custom'; + $values = array( + 'false' => '<div class="bar">Nay</div>', + 'true' => '<div class="foo">Yay</div>', + ); + $view->field['age']->options['type_custom_false'] = $values['false']; + $view->field['age']->options['type_custom_true'] = $values['true']; + $this->assertEqual($values['false'], $view->field['age']->advanced_render($view->result[0])); + $this->assertEqual($values['true'], $view->field['age']->advanced_render($view->result[1])); + + // Set a custom output format through the UI using unsafe inputs. + $view->field['age']->options['type'] = 'custom'; + $values = array( + 'false' => '<script>alert("Nay");</script>', + 'true' => '<script>alert("Yay");</script>', + ); + $view->field['age']->options['type_custom_false'] = $values['false']; + $view->field['age']->options['type_custom_true'] = $values['true']; + $this->assertNotEqual($values['false'], $view->field['age']->advanced_render($view->result[0])); + $this->assertNotEqual($values['true'], $view->field['age']->advanced_render($view->result[1])); + } +} |