function BookTest::testBookOutline
Same name in other branches
- 8.9.x core/modules/book/tests/src/Functional/BookTest.php \Drupal\Tests\book\Functional\BookTest::testBookOutline()
- 10 core/modules/book/tests/src/Functional/BookTest.php \Drupal\Tests\book\Functional\BookTest::testBookOutline()
- 11.x core/modules/book/tests/src/Functional/BookTest.php \Drupal\Tests\book\Functional\BookTest::testBookOutline()
Tests outline of a book.
File
-
core/
modules/ book/ tests/ src/ Functional/ BookTest.php, line 482
Class
- BookTest
- Create a book, add pages, and test book interface.
Namespace
Drupal\Tests\book\FunctionalCode
public function testBookOutline() {
$this->drupalLogin($this->bookAuthor);
// Create new node not yet a book.
$empty_book = $this->drupalCreateNode([
'type' => 'book',
]);
$this->drupalGet('node/' . $empty_book->id() . '/outline');
$this->assertSession()
->linkNotExists('Book outline', 'Book Author is not allowed to outline');
$this->drupalLogin($this->adminUser);
$this->drupalGet('node/' . $empty_book->id() . '/outline');
$this->assertSession()
->pageTextContains('Book outline');
// Verify that the node does not belong to a book.
$this->assertTrue($this->assertSession()
->optionExists('edit-book-bid', 0)
->isSelected());
$this->assertSession()
->linkNotExists('Remove from book outline');
$edit = [];
$edit['book[bid]'] = '1';
$this->drupalGet('node/' . $empty_book->id() . '/outline');
$this->submitForm($edit, 'Add to book outline');
$node = \Drupal::entityTypeManager()->getStorage('node')
->load($empty_book->id());
// Test the book array.
$this->assertEquals($empty_book->id(), $node->book['nid']);
$this->assertEquals($empty_book->id(), $node->book['bid']);
$this->assertEquals(1, $node->book['depth']);
$this->assertEquals($empty_book->id(), $node->book['p1']);
$this->assertEquals('0', $node->book['pid']);
// Create new book.
$this->drupalLogin($this->bookAuthor);
$book = $this->createBookNode('new');
$this->drupalLogin($this->adminUser);
$this->drupalGet('node/' . $book->id() . '/outline');
$this->assertSession()
->pageTextContains('Book outline');
$this->clickLink('Remove from book outline');
$this->assertSession()
->pageTextContains('Are you sure you want to remove ' . $book->label() . ' from the book hierarchy?');
// Create a new node and set the book after the node was created.
$node = $this->drupalCreateNode([
'type' => 'book',
]);
$edit = [];
$edit['book[bid]'] = $node->id();
$this->drupalGet('node/' . $node->id() . '/edit');
$this->submitForm($edit, 'Save');
$node = \Drupal::entityTypeManager()->getStorage('node')
->load($node->id());
// Test the book array.
$this->assertEquals($node->id(), $node->book['nid']);
$this->assertEquals($node->id(), $node->book['bid']);
$this->assertEquals(1, $node->book['depth']);
$this->assertEquals($node->id(), $node->book['p1']);
$this->assertEquals('0', $node->book['pid']);
// Test the form itself.
$this->drupalGet('node/' . $node->id() . '/edit');
$this->assertTrue($this->assertSession()
->optionExists('edit-book-bid', $node->id())
->isSelected());
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.