public function PageTitleTest::testRoutingTitle in Drupal 8
Same name and namespace in other branches
- 9 core/modules/system/tests/src/Functional/System/PageTitleTest.php \Drupal\Tests\system\Functional\System\PageTitleTest::testRoutingTitle()
Tests the page title of render arrays.
See also
\Drupal\test_page_test\Controller\Test
File
- core/
modules/ system/ tests/ src/ Functional/ System/ PageTitleTest.php, line 112
Class
- PageTitleTest
- Tests HTML output escaping of page title, site name, and slogan.
Namespace
Drupal\Tests\system\Functional\SystemCode
public function testRoutingTitle() {
// Test the '#title' render array attribute.
$this
->drupalGet('test-render-title');
$this
->assertTitle('Foo | Drupal');
$result = $this
->xpath('//h1[@class="page-title"]');
$this
->assertEqual('Foo', $result[0]
->getText());
// Test forms
$this
->drupalGet('form-test/object-builder');
$this
->assertTitle('Test dynamic title | Drupal');
$result = $this
->xpath('//h1[@class="page-title"]');
$this
->assertEqual('Test dynamic title', $result[0]
->getText());
// Set some custom translated strings.
$settings_key = 'locale_custom_strings_en';
// Update in-memory settings directly.
$settings = Settings::getAll();
$settings[$settings_key] = [
'' => [
'Static title' => 'Static title translated',
],
];
new Settings($settings);
// Rewrites the settings.php.
$this
->writeSettings([
'settings' => [
$settings_key => (object) [
'value' => $settings[$settings_key],
'required' => TRUE,
],
],
]);
// Ensure that the title got translated.
$this
->drupalGet('test-page-static-title');
$this
->assertTitle('Static title translated | Drupal');
$result = $this
->xpath('//h1[@class="page-title"]');
$this
->assertEqual('Static title translated', $result[0]
->getText());
// Test the dynamic '_title_callback' route option.
$this
->drupalGet('test-page-dynamic-title');
$this
->assertTitle('Dynamic title | Drupal');
$result = $this
->xpath('//h1[@class="page-title"]');
$this
->assertEqual('Dynamic title', $result[0]
->getText());
// Ensure that titles are cacheable and are escaped normally if the
// controller does not escape them.
$this
->drupalGet('test-page-cached-controller');
$this
->assertTitle('Cached title | Drupal');
$this
->assertRaw(Html::escape('<span>Cached title</span>') . '</h1>');
$this
->drupalGet('test-page-cached-controller');
$this
->assertTitle('Cached title | Drupal');
$this
->assertRaw(Html::escape('<span>Cached title</span>') . '</h1>');
}