function BookTest::testBookNavigationBlock
Same name in other branches
- 9 core/modules/book/tests/src/Functional/BookTest.php \Drupal\Tests\book\Functional\BookTest::testBookNavigationBlock()
- 8.9.x core/modules/book/tests/src/Functional/BookTest.php \Drupal\Tests\book\Functional\BookTest::testBookNavigationBlock()
- 10 core/modules/book/tests/src/Functional/BookTest.php \Drupal\Tests\book\Functional\BookTest::testBookNavigationBlock()
Tests the functionality of the book navigation block.
File
-
core/
modules/ book/ tests/ src/ Functional/ BookTest.php, line 282
Class
- BookTest
- Create a book, add pages, and test book interface.
Namespace
Drupal\Tests\book\FunctionalCode
public function testBookNavigationBlock() {
$this->drupalLogin($this->adminUser);
// Enable the block.
$block = $this->drupalPlaceBlock('book_navigation');
// Give anonymous users the permission 'node test view'.
$edit = [];
$edit[RoleInterface::ANONYMOUS_ID . '[node test view]'] = TRUE;
$this->drupalGet('admin/people/permissions/' . RoleInterface::ANONYMOUS_ID);
$this->submitForm($edit, 'Save permissions');
$this->assertSession()
->pageTextContains('The changes have been saved.');
// Test correct display of the block.
$nodes = $this->createBook();
$this->drupalGet('<front>');
// Book navigation block.
$this->assertSession()
->pageTextContains($block->label());
// Link to book root.
$this->assertSession()
->pageTextContains($this->book
->label());
// No links to individual book pages.
$this->assertSession()
->pageTextNotContains($nodes[0]->label());
// Ensure that an unpublished node does not appear in the navigation for a
// user without access. By unpublishing a parent page, child pages should
// not appear in the navigation. The node_access_test module is disabled
// since it interferes with this logic.
/** @var \Drupal\Core\Extension\ModuleInstaller $installer */
$installer = \Drupal::service('module_installer');
$installer->uninstall([
'node_access_test',
]);
node_access_rebuild();
$nodes[0]->setUnPublished();
$nodes[0]->save();
// Verify the user does not have access to the unpublished node.
$this->assertFalse($nodes[0]->access('view', $this->webUser));
// Verify the unpublished book page does not appear in the navigation.
$this->drupalLogin($this->webUser);
$this->drupalGet($nodes[0]->toUrl());
$this->assertSession()
->statusCodeEquals(403);
$this->drupalGet($this->book
->toUrl());
$this->assertSession()
->responseNotContains($nodes[0]->getTitle());
$this->assertSession()
->responseNotContains($nodes[1]->getTitle());
$this->assertSession()
->responseNotContains($nodes[2]->getTitle());
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.