View source
<?php
namespace Drupal\Tests\book\Kernel;
use Drupal\node\Entity\Node;
use Drupal\node\Entity\NodeType;
use Drupal\KernelTests\KernelTestBase;
class BookPendingRevisionTest extends KernelTestBase {
protected static $modules = [
'system',
'user',
'field',
'filter',
'text',
'node',
'book',
];
protected function setUp() : void {
parent::setUp();
$this
->installEntitySchema('user');
$this
->installEntitySchema('node');
$this
->installSchema('book', [
'book',
]);
$this
->installSchema('node', [
'node_access',
]);
$this
->installConfig([
'node',
'book',
'field',
]);
}
public function testBookWithPendingRevisions() {
$content_type = NodeType::create([
'type' => $this
->randomMachineName(),
'name' => $this
->randomString(),
]);
$content_type
->save();
$book_config = $this
->config('book.settings');
$allowed_types = $book_config
->get('allowed_types');
$allowed_types[] = $content_type
->id();
$book_config
->set('allowed_types', $allowed_types)
->save();
$book_1 = Node::create([
'title' => $this
->randomString(),
'type' => $content_type
->id(),
]);
$book_1->book['bid'] = 'new';
$book_1
->save();
$book_1_child = Node::create([
'title' => $this
->randomString(),
'type' => $content_type
->id(),
]);
$book_1_child->book['bid'] = $book_1
->id();
$book_1_child->book['pid'] = $book_1
->id();
$book_1_child
->save();
$book_2 = Node::create([
'title' => $this
->randomString(),
'type' => $content_type
->id(),
]);
$book_2->book['bid'] = 'new';
$book_2
->save();
$child = Node::create([
'title' => $this
->randomString(),
'type' => $content_type
->id(),
]);
$child->book['bid'] = $book_1
->id();
$child->book['pid'] = $book_1
->id();
$child
->save();
$book_manager = $this->container
->get('book.manager');
$child->book['bid'] = $book_2
->id();
$child
->setNewRevision(TRUE);
$child
->isDefaultRevision(FALSE);
$this
->assertFalse($book_manager
->updateOutline($child), 'A pending revision can not change the book outline.');
$child = \Drupal::entityTypeManager()
->getStorage('node')
->loadUnchanged($child
->id());
$child->book['pid'] = $book_1_child
->id();
$child
->setNewRevision(TRUE);
$child
->isDefaultRevision(FALSE);
$this
->assertFalse($book_manager
->updateOutline($child), 'A pending revision can not change the book outline.');
$child = \Drupal::entityTypeManager()
->getStorage('node')
->loadUnchanged($child
->id());
$child->book['weight'] = 2;
$child
->setNewRevision(TRUE);
$child
->isDefaultRevision(FALSE);
$this
->assertFalse($book_manager
->updateOutline($child), 'A pending revision can not change the book outline.');
}
}