/** * @covers ::safeJoin */ 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); }
/** * @covers ::safeJoin */ 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(). $string = '<em>will be markup</em>'; SafeMarkup::setMultiple([$string => ['html' => TRUE]]); $items = [ '<em>will be escaped</em>', $string, ['#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); }