1 book.test public BookTestCase::testBookNavigationCache()

Tests book cache functionality through node interfaces.

File

core/modules/book/tests/book.test, line 153
Tests for book.module.

Class

BookTestCase
Tests the functionality of the Book module.

Code

public function testBookNavigationCache() {
  // Create new book.
  $nodes = $this->createBook();
  $book = $this->book;

  $this->backdropLogin($this->book_author);

  // Check that book pages display along with the correct outlines and
  // previous/next links.
  $outline = array($nodes[0], $nodes[3], $nodes[4]);
  $this->checkBookNode($book, $outline, FALSE, FALSE, $nodes[0], array());
  $outline = array($nodes[1], $nodes[2]);
  $breadcrumb = array($book);
  $this->checkBookNode($nodes[0], $outline, $book, $book, $nodes[1], $breadcrumb);
  $breadcrumb = array($book, $nodes[0]);
  $this->checkBookNode($nodes[1], NULL, $nodes[0], $nodes[0], $nodes[2], $breadcrumb);
  $this->checkBookNode($nodes[2], NULL, $nodes[1], $nodes[0], $nodes[3], $breadcrumb);
  $breadcrumb = array($book);
  $this->checkBookNode($nodes[3], NULL, $nodes[2], $book, $nodes[4], $breadcrumb);
  $this->checkBookNode($nodes[4], NULL, $nodes[3], $book, FALSE, $breadcrumb);

  // // Add a book page and check for flushed navigation cache and updated
  // outlines.
  $node5 = $this->createBookNode($book->nid);
  debug('node 5 added');

  $outline = array($nodes[0], $nodes[3], $nodes[4], $node5);
  $this->checkBookNode($book, $outline, FALSE, FALSE, $nodes[0], array());
  $outline = array($nodes[1], $nodes[2]);
  $breadcrumb = array($book);
  $this->checkBookNode($nodes[0], $outline, $book, $book, $nodes[1], $breadcrumb);
  $breadcrumb = array($book, $nodes[0]);
  $this->checkBookNode($nodes[1], NULL, $nodes[0], $nodes[0], $nodes[2], $breadcrumb);
  $this->checkBookNode($nodes[2], NULL, $nodes[1], $nodes[0], $nodes[3], $breadcrumb);
  $breadcrumb = array($book);
  $this->checkBookNode($nodes[3], NULL, $nodes[2], $book, $nodes[4], $breadcrumb);
  $this->checkBookNode($nodes[4], NULL, $nodes[3], $book, $node5, $breadcrumb);
  $this->checkBookNode($node5, NULL, $nodes[4], $book, FALSE, $breadcrumb);

  // Delete a book page and check for flushed navigation cache and updated
  // outlines.
  $nodes[3]->delete();
  debug('node 3 deleted');

  $outline = array($nodes[0], $nodes[4], $node5);
  $this->checkBookNode($book, $outline, FALSE, FALSE, $nodes[0], array());
  $outline = array($nodes[1], $nodes[2]);
  $breadcrumb = array($book);
  $this->checkBookNode($nodes[0], $outline, $book, $book, $nodes[1], $breadcrumb);
  $breadcrumb = array($book, $nodes[0]);
  $this->checkBookNode($nodes[1], NULL, $nodes[0], $nodes[0], $nodes[2], $breadcrumb);
  $this->checkBookNode($nodes[2], NULL, $nodes[1], $nodes[0], $nodes[4], $breadcrumb);
  $breadcrumb = array($book);
  $this->checkBookNode($nodes[4], NULL, $nodes[2], $book, $node5, $breadcrumb);
  $this->checkBookNode($node5, NULL, $nodes[4], $book, FALSE, $breadcrumb);
}