public function CustomBooleanTest::testCustomOption

Tests the setting and output of custom labels for boolean values.

File

drupal/core/modules/views_ui/lib/Drupal/views_ui/Tests/CustomBooleanTest.php, line 54
Contains \Drupal\views_ui\Tests\CustomBooleanTest.

Class

CustomBooleanTest
Tests the UI and functionality for the Custom boolean field handler options.

Namespace

Drupal\views_ui\Tests

Code

public function testCustomOption() {

  // Add the boolean field handler to the test view.
  $view = views_get_view('test_view');
  $view
    ->setDisplay();
  $view->displayHandlers
    ->get('default')
    ->overrideOption('fields', array(
    'age' => array(
      'id' => 'age',
      'table' => 'views_test_data',
      'field' => 'age',
      'relationship' => 'none',
    ),
  ));
  $this
    ->executeView($view);
  $custom_true = 'Yay';
  $custom_false = 'Nay';

  // Set up some custom value mappings for different types.
  $custom_values = array(
    'plain' => array(
      'true' => $custom_true,
      'false' => $custom_false,
      'test' => 'assertTrue',
    ),
    'allowed tag' => array(
      'true' => '<p>' . $custom_true . '</p>',
      'false' => '<p>' . $custom_false . '</p>',
      'test' => 'assertTrue',
    ),
    'disallowed tag' => array(
      'true' => '<script>' . $custom_true . '</script>',
      'false' => '<script>' . $custom_false . '</script>',
      'test' => 'assertFalse',
    ),
  );

  // Run the same tests on each type.
  foreach ($custom_values as $type => $values) {
    $options = array(
      'options[type]' => 'custom',
      'options[type_custom_true]' => $values['true'],
      'options[type_custom_false]' => $values['false'],
    );
    $this
      ->drupalPost('admin/structure/views/nojs/config-item/test_view/default/field/age', $options, 'Apply');

    // Save the view.
    $this
      ->drupalPost('admin/structure/views/view/test_view', array(), 'Save');
    $view = views_get_view('test_view');
    $output = $view
      ->preview();
    $output = drupal_render($output);
    $replacements = array(
      '%type' => $type,
    );
    $this
      ->{$values['test']}(strpos($output, $values['true']), format_string('Expected custom boolean TRUE value in output for %type.', $replacements));
    $this
      ->{$values['test']}(strpos($output, $values['false']), format_string('Expected custom boolean FALSE value in output for %type', $replacements));
  }
}