function CustomBooleanTest::testCustomOption
Tests the setting and output of custom labels for boolean values.
File
- 
              core/modules/ views_ui/ tests/ src/ Functional/ CustomBooleanTest.php, line 50 
Class
- CustomBooleanTest
- Tests the UI and functionality for the Custom boolean field handler options.
Namespace
Drupal\Tests\views_ui\FunctionalCode
public function testCustomOption() {
  // Add the boolean field handler to the test view.
  $view = Views::getView('test_view');
  $view->setDisplay();
  $view->displayHandlers
    ->get('default')
    ->overrideOption('fields', [
    'age' => [
      'id' => 'age',
      'table' => 'views_test_data',
      'field' => 'age',
      'relationship' => 'none',
      'plugin_id' => 'boolean',
    ],
  ]);
  $view->save();
  $this->executeView($view);
  $custom_true = 'Yay';
  $custom_false = 'Nay';
  // Set up some custom value mappings for different types.
  $custom_values = [
    'plain' => [
      'true' => $custom_true,
      'false' => $custom_false,
      'test' => 'assertStringContainsString',
    ],
    'allowed tag' => [
      'true' => '<p>' . $custom_true . '</p>',
      'false' => '<p>' . $custom_false . '</p>',
      'test' => 'assertStringContainsString',
    ],
    'disallowed tag' => [
      'true' => '<script>' . $custom_true . '</script>',
      'false' => '<script>' . $custom_false . '</script>',
      'test' => 'assertStringNotContainsString',
    ],
  ];
  // Run the same tests on each type.
  foreach ($custom_values as $type => $values) {
    $options = [
      'options[type]' => 'custom',
      'options[type_custom_true]' => $values['true'],
      'options[type_custom_false]' => $values['false'],
    ];
    $this->drupalGet('admin/structure/views/nojs/handler/test_view/default/field/age');
    $this->submitForm($options, 'Apply');
    // Save the view.
    $this->drupalGet('admin/structure/views/view/test_view');
    $this->submitForm([], 'Save');
    $view = Views::getView('test_view');
    $output = $view->preview();
    $output = \Drupal::service('renderer')->renderRoot($output);
    $this->{$values['test']}($values['true'], (string) $output, new FormattableMarkup('Expected custom boolean TRUE value %value in output for %type', [
      '%value' => $values['true'],
      '%type' => $type,
    ]));
    $this->{$values['test']}($values['false'], (string) $output, new FormattableMarkup('Expected custom boolean FALSE value %value in output for %type', [
      '%value' => $values['false'],
      '%type' => $type,
    ]));
  }
}Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.
