/** * Ensures invalid content is handled correctly. * * @expectedException \Exception */ public function testThemeEscapeAndRenderNotPrintable() { theme_render_and_autoescape(new NonPrintable()); }
/** * Ensure cache metadata is bubbled when using theme_render_and_autoescape(). */ public function testBubblingMetadataWithRenderable() { $link = new Link('', Url::fromRoute('<current>')); $context = new RenderContext(); // Use a closure here since we need to render with a render context. $theme_render_and_autoescape = function () use($link) { return theme_render_and_autoescape($link); }; /** @var \Drupal\Core\Render\RendererInterface $renderer */ $renderer = \Drupal::service('renderer'); $output = $renderer->executeInRenderContext($context, $theme_render_and_autoescape); $this->assertEquals('<a href="/' . urlencode('<none>') . '"></a>', $output); /** @var \Drupal\Core\Render\BubbleableMetadata $metadata */ $metadata = $context->pop(); $this->assertEquals(['route'], $metadata->getCacheContexts()); }