function LinkGenerationTest::testHookLinkAlter in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/system/src/Tests/Utility/LinkGenerationTest.php \Drupal\system\Tests\Utility\LinkGenerationTest::testHookLinkAlter()
Tests how hook_link_alter() can affect escaping of the link text.
File
- core/
modules/ system/ src/ Tests/ Utility/ LinkGenerationTest.php, line 27 - Contains \Drupal\system\Tests\Utility\LinkGenerationTest.
Class
- LinkGenerationTest
- Tests link generation with hooks.
Namespace
Drupal\system\Tests\UtilityCode
function testHookLinkAlter() {
$url = Url::fromUri('http://example.com');
$renderer = \Drupal::service('renderer');
$link = $renderer
->executeInRenderContext(new RenderContext(), function () use ($url) {
return \Drupal::l([
'#markup' => '<em>link with markup</em>',
], $url);
});
$this
->setRawContent($link);
$this
->assertTrue(SafeMarkup::isSafe($link), 'The output of link generation is marked safe as it is a link.');
// Ensure the content of the link is not escaped.
$this
->assertRaw('<em>link with markup</em>');
// Test just adding text to an already safe string.
\Drupal::state()
->set('link_generation_test_link_alter', TRUE);
$link = $renderer
->executeInRenderContext(new RenderContext(), function () use ($url) {
return \Drupal::l([
'#markup' => '<em>link with markup</em>',
], $url);
});
$this
->setRawContent($link);
$this
->assertTrue(SafeMarkup::isSafe($link), 'The output of link generation is marked safe as it is a link.');
// Ensure the content of the link is escaped.
$this
->assertEscaped('<em>link with markup</em> <strong>Test!</strong>');
// Test passing a safe string to t().
\Drupal::state()
->set('link_generation_test_link_alter_safe', TRUE);
$link = $renderer
->executeInRenderContext(new RenderContext(), function () use ($url) {
return \Drupal::l([
'#markup' => '<em>link with markup</em>',
], $url);
});
$this
->setRawContent($link);
$this
->assertTrue(SafeMarkup::isSafe($link), 'The output of link generation is marked safe as it is a link.');
// Ensure the content of the link is escaped.
$this
->assertRaw('<em>link with markup</em> <strong>Test!</strong>');
// Test passing an unsafe string to t().
$link = $renderer
->executeInRenderContext(new RenderContext(), function () use ($url) {
return \Drupal::l('<em>link with markup</em>', $url);
});
$this
->setRawContent($link);
$this
->assertTrue(SafeMarkup::isSafe($link), 'The output of link generation is marked safe as it is a link.');
// Ensure the content of the link is escaped.
$this
->assertEscaped('<em>link with markup</em>');
$this
->assertRaw('<strong>Test!</strong>');
}