function BookTest::testAdminBookNodeListing

Same name and namespace in other branches
  1. 8.9.x core/modules/book/tests/src/Functional/BookTest.php \Drupal\Tests\book\Functional\BookTest::testAdminBookNodeListing()
  2. 10 core/modules/book/tests/src/Functional/BookTest.php \Drupal\Tests\book\Functional\BookTest::testAdminBookNodeListing()
  3. 11.x 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 628

Class

BookTest
Create a book, add pages, and test book interface.

Namespace

Drupal\Tests\book\Functional

Code

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);
}

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