Mercurial > hg > isophonics-drupal-site
diff core/modules/node/tests/src/Functional/NodeTitleTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/node/tests/src/Functional/NodeTitleTest.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,103 @@ +<?php + +namespace Drupal\Tests\node\Functional; + +use Drupal\comment\Tests\CommentTestTrait; +use Drupal\Component\Utility\Html; + +/** + * Tests node title. + * + * @group node + */ +class NodeTitleTest extends NodeTestBase { + + use CommentTestTrait; + + /** + * Modules to enable. + * + * @var array + */ + public static $modules = ['comment', 'views', 'block']; + + /** + * A user with permission to bypass access content. + * + * @var \Drupal\user\UserInterface + */ + protected $adminUser; + + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + $this->drupalPlaceBlock('system_breadcrumb_block'); + + $this->adminUser = $this->drupalCreateUser(['administer nodes', 'create article content', 'create page content', 'post comments']); + $this->drupalLogin($this->adminUser); + $this->addDefaultCommentField('node', 'page'); + } + + /** + * Creates one node and tests if the node title has the correct value. + */ + public function testNodeTitle() { + // 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()); + $xpath = '//title'; + $this->assertEqual($this->xpath($xpath)[0]->getText(), $node->label() . ' | Drupal', 'Page title is equal to node title.', 'Node'); + + // Test breadcrumb in comment preview. + $this->drupalGet('comment/reply/node/' . $node->id() . '/comment'); + $xpath = '//nav[@class="breadcrumb"]/ol/li[last()]/a'; + $this->assertEqual($this->xpath($xpath)[0]->getText(), $node->label(), 'Node breadcrumb is equal to node title.', 'Node'); + + // Test node title in comment preview. + $this->assertEqual($this->xpath('//article[contains(concat(" ", normalize-space(@class), " "), :node-class)]/h2/a/span', [':node-class' => ' node--type-' . $node->bundle() . ' '])[0]->getText(), $node->label(), 'Node preview title is equal to node title.', 'Node'); + + // 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->assertTitle(0 . ' | Drupal', 'Page title is equal to 0.', 'Node'); + // Test that 0 appears in the template <h1>. + $xpath = '//h1'; + $this->assertEqual(current($this->xpath($xpath)), 0, 'Node title is displayed as 0.', 'Node'); + + // 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->assertRaw('<title>' . $edge_case_title_escaped . ' | Drupal</title>', 'Page title is equal to article\'s "title".', 'Node'); + + // Test that the title appears as <title> when reloading the node page. + $this->drupalGet('node/' . $node->id()); + $this->assertRaw('<title>' . $edge_case_title_escaped . ' | Drupal</title>', 'Page title is equal to article\'s "title".', 'Node'); + + } + +}