public function TwigExtensionTest::testSafeJoin in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php \Drupal\Tests\Core\Template\TwigExtensionTest::testSafeJoin()
@covers ::safeJoin
File
- core/
tests/ Drupal/ Tests/ Core/ Template/ TwigExtensionTest.php, line 183 - Contains \Drupal\Tests\Core\Template\TwigExtensionTest.
Class
- TwigExtensionTest
- Tests the twig extension.
Namespace
Drupal\Tests\Core\TemplateCode
public function testSafeJoin() {
$renderer = $this
->prophesize(RendererInterface::class);
$renderer
->render([
'#markup' => '<strong>will be rendered</strong>',
'#printed' => FALSE,
])
->willReturn('<strong>will be rendered</strong>');
$renderer = $renderer
->reveal();
$twig_extension = new TwigExtension($renderer);
$twig_environment = $this
->prophesize(TwigEnvironment::class)
->reveal();
// Simulate t().
$markup = $this
->prophesize(TranslatableMarkup::class);
$markup
->__toString()
->willReturn('<em>will be markup</em>');
$markup = $markup
->reveal();
$items = [
'<em>will be escaped</em>',
$markup,
[
'#markup' => '<strong>will be rendered</strong>',
],
];
$result = $twig_extension
->safeJoin($twig_environment, $items, '<br/>');
$this
->assertEquals('<em>will be escaped</em><br/><em>will be markup</em><br/><strong>will be rendered</strong>', $result);
// Ensure safe_join Twig filter supports Traversable variables.
$items = new \ArrayObject([
'<em>will be escaped</em>',
$markup,
[
'#markup' => '<strong>will be rendered</strong>',
],
]);
$result = $twig_extension
->safeJoin($twig_environment, $items, ', ');
$this
->assertEquals('<em>will be escaped</em>, <em>will be markup</em>, <strong>will be rendered</strong>', $result);
// Ensure safe_join Twig filter supports empty variables.
$items = NULL;
$result = $twig_extension
->safeJoin($twig_environment, $items, '<br>');
$this
->assertEmpty($result);
}