public function BookTest::testAdminBookNodeListing in Drupal 10
Same name and namespace in other branches
- 8 core/modules/book/tests/src/Functional/BookTest.php \Drupal\Tests\book\Functional\BookTest::testAdminBookNodeListing()
- 9 core/modules/book/tests/src/Functional/BookTest.php \Drupal\Tests\book\Functional\BookTest::testAdminBookNodeListing()
Tests the administrative listing of all book pages in a book.
File
- core/
modules/ book/ tests/ src/ Functional/ BookTest.php, line 615
Class
- BookTest
- Create a book, add pages, and test book interface.
Namespace
Drupal\Tests\book\FunctionalCode
public function testAdminBookNodeListing() {
// Create a new book.
$nodes = $this
->createBook();
$this
->drupalLogin($this->adminUser);
// Load the book page list and assert the created book title is displayed
// and action links are shown on list items.
$this
->drupalGet('admin/structure/book/' . $this->book
->id());
$this
->assertSession()
->pageTextContains($this->book
->label());
// Test that the view link is found from the list.
$this
->assertSession()
->elementTextEquals('xpath', '//table//ul[@class="dropbutton"]/li/a', 'View');
// Test that all the book pages are displayed on the book outline page.
$this
->assertSession()
->elementsCount('xpath', '//table//ul[@class="dropbutton"]/li/a', count($nodes));
// Unpublish a book in the hierarchy.
$nodes[0]
->setUnPublished();
$nodes[0]
->save();
// Node should still appear on the outline for admins.
$this
->drupalGet('admin/structure/book/' . $this->book
->id());
$this
->assertSession()
->elementsCount('xpath', '//table//ul[@class="dropbutton"]/li/a', count($nodes));
// Saving a book page not as the current version shouldn't effect the book.
$old_title = $nodes[1]
->getTitle();
$new_title = $this->randomGenerator
->name();
$nodes[1]
->isDefaultRevision(FALSE);
$nodes[1]
->setNewRevision(TRUE);
$nodes[1]
->setTitle($new_title);
$nodes[1]
->save();
$this
->drupalGet('admin/structure/book/' . $this->book
->id());
$this
->assertSession()
->elementsCount('xpath', '//table//ul[@class="dropbutton"]/li/a', count($nodes));
$this
->assertSession()
->responseNotContains($new_title);
$this
->assertSession()
->responseContains($old_title);
}