setDisplay(); // Alter the text of the field to a random string. $random = '
' . $this->randomMachineName() . '
'; $view->displayHandlers->get('default')->overrideOption('fields', [ 'name' => [ 'id' => 'name', 'table' => 'views_test_data', 'field' => 'name', 'relationship' => 'none', 'alter' => [ 'text' => $random, ], ], ]); $this->executeView($view); $this->assertEqual($random, $view->style_plugin->getField(0, 'name')); } /** * Ensure that custom fields can use tokens. */ public function testFieldCustomTokens() { $view = Views::getView('test_view'); $view->setDisplay(); $view->displayHandlers->get('default')->overrideOption('fields', [ 'age' => [ 'id' => 'age', 'exclude' => TRUE, 'table' => 'views_test_data', 'field' => 'age', ], 'name' => [ 'id' => 'name', 'table' => 'views_test_data', 'field' => 'name', 'relationship' => 'none', 'alter' => [ 'text' => 'Amount of kittens: {{ age }}', ], ], ]); /** @var \Drupal\Core\Render\RendererInterface $renderer */ $renderer = \Drupal::service('renderer'); $preview = $view->preview(); $output = $renderer->renderRoot($preview); $expected_text = 'Amount of kittens: ' . $view->style_plugin->getField(0, 'age'); $this->assertTrue(strpos((string) $output, $expected_text), 'The views token has been successfully replaced.'); } /** * Ensure that custom field content is XSS filtered. */ public function testCustomFieldXss() { $view = Views::getView('test_view'); $view->setDisplay(); // Alter the text of the field to include XSS. $text = ''; $view->displayHandlers->get('default')->overrideOption('fields', [ 'name' => [ 'id' => 'name', 'table' => 'views_test_data', 'field' => 'name', 'relationship' => 'none', 'alter' => [ 'text' => $text, ], ], ]); $this->executeView($view); $this->assertEqual(Xss::filter($text), $view->style_plugin->getField(0, 'name')); } }