function NodeTitleTest::testNodeTitle

Same name in other branches
  1. 9 core/modules/node/tests/src/Functional/NodeTitleTest.php \Drupal\Tests\node\Functional\NodeTitleTest::testNodeTitle()
  2. 8.9.x core/modules/node/tests/src/Functional/NodeTitleTest.php \Drupal\Tests\node\Functional\NodeTitleTest::testNodeTitle()
  3. 10 core/modules/node/tests/src/Functional/NodeTitleTest.php \Drupal\Tests\node\Functional\NodeTitleTest::testNodeTitle()

Creates one node and tests if the node title has the correct value.

File

core/modules/node/tests/src/Functional/NodeTitleTest.php, line 59

Class

NodeTitleTest
Tests node title.

Namespace

Drupal\Tests\node\Functional

Code

public function testNodeTitle() : void {
    // Create "Basic page" content with title.
    // Add the node to the frontpage so we can test if teaser links are
    // clickable.
    $settings = [
        'title' => $this->randomMachineName(8),
        'promote' => 1,
    ];
    $node = $this->drupalCreateNode($settings);
    // Test <title> tag.
    $this->drupalGet('node/' . $node->id());
    $this->assertSession()
        ->elementTextEquals('xpath', '//title', $node->label() . ' | Drupal');
    // Test breadcrumb in comment preview.
    $this->assertBreadcrumb('comment/reply/node/' . $node->id() . '/comment', [
        '' => 'Home',
        'node/' . $node->id() => $node->label(),
    ]);
    // Verify that node preview title is equal to node title.
    $this->assertSession()
        ->elementTextEquals('xpath', "//article/h2/a/span", $node->label());
    // Test node title is clickable on teaser list (/node).
    $this->drupalGet('node');
    $this->clickLink($node->label());
    // Test edge case where node title is set to 0.
    $settings = [
        'title' => 0,
    ];
    $node = $this->drupalCreateNode($settings);
    // Test that 0 appears as <title>.
    $this->drupalGet('node/' . $node->id());
    $this->assertSession()
        ->titleEquals('0 | Drupal');
    // Test that 0 appears in the template <h1>.
    $this->assertSession()
        ->elementTextEquals('xpath', '//h1', '0');
    // Test edge case where node title contains special characters.
    $edge_case_title = 'article\'s "title".';
    $settings = [
        'title' => $edge_case_title,
    ];
    $node = $this->drupalCreateNode($settings);
    // Test that the title appears as <title>. The title will be escaped on the
    // the page.
    $edge_case_title_escaped = Html::escape($edge_case_title);
    $this->drupalGet('node/' . $node->id());
    $this->assertSession()
        ->responseContains('<title>' . $edge_case_title_escaped . ' | Drupal</title>');
    // Test that the title appears as <title> when reloading the node page.
    $this->drupalGet('node/' . $node->id());
    $this->assertSession()
        ->responseContains('<title>' . $edge_case_title_escaped . ' | Drupal</title>');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.