Version 1
[yaffs-website] / web / core / modules / book / tests / src / Unit / BookUninstallValidatorTest.php
diff --git a/web/core/modules/book/tests/src/Unit/BookUninstallValidatorTest.php b/web/core/modules/book/tests/src/Unit/BookUninstallValidatorTest.php
new file mode 100644 (file)
index 0000000..2dfd7a0
--- /dev/null
@@ -0,0 +1,98 @@
+<?php
+
+namespace Drupal\Tests\book\Unit;
+
+use Drupal\simpletest\AssertHelperTrait;
+use Drupal\Tests\UnitTestCase;
+
+/**
+ * @coversDefaultClass \Drupal\book\BookUninstallValidator
+ * @group book
+ */
+class BookUninstallValidatorTest extends UnitTestCase {
+
+  use AssertHelperTrait;
+
+  /**
+   * @var \Drupal\book\BookUninstallValidator|\PHPUnit_Framework_MockObject_MockObject
+   */
+  protected $bookUninstallValidator;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->bookUninstallValidator = $this->getMockBuilder('Drupal\book\BookUninstallValidator')
+      ->disableOriginalConstructor()
+      ->setMethods(['hasBookOutlines', 'hasBookNodes'])
+      ->getMock();
+    $this->bookUninstallValidator->setStringTranslation($this->getStringTranslationStub());
+  }
+
+  /**
+   * @covers ::validate
+   */
+  public function testValidateNotBook() {
+    $this->bookUninstallValidator->expects($this->never())
+      ->method('hasBookOutlines');
+    $this->bookUninstallValidator->expects($this->never())
+      ->method('hasBookNodes');
+
+    $module = 'not_book';
+    $expected = [];
+    $reasons = $this->bookUninstallValidator->validate($module);
+    $this->assertSame($expected, $this->castSafeStrings($reasons));
+  }
+
+  /**
+   * @covers ::validate
+   */
+  public function testValidateEntityQueryWithoutResults() {
+    $this->bookUninstallValidator->expects($this->once())
+      ->method('hasBookOutlines')
+      ->willReturn(FALSE);
+    $this->bookUninstallValidator->expects($this->once())
+      ->method('hasBookNodes')
+      ->willReturn(FALSE);
+
+    $module = 'book';
+    $expected = [];
+    $reasons = $this->bookUninstallValidator->validate($module);
+    $this->assertSame($expected, $this->castSafeStrings($reasons));
+  }
+
+  /**
+   * @covers ::validate
+   */
+  public function testValidateEntityQueryWithResults() {
+    $this->bookUninstallValidator->expects($this->once())
+      ->method('hasBookOutlines')
+      ->willReturn(FALSE);
+    $this->bookUninstallValidator->expects($this->once())
+      ->method('hasBookNodes')
+      ->willReturn(TRUE);
+
+    $module = 'book';
+    $expected = ['To uninstall Book, delete all content that has the Book content type'];
+    $reasons = $this->bookUninstallValidator->validate($module);
+    $this->assertSame($expected, $this->castSafeStrings($reasons));
+  }
+
+  /**
+   * @covers ::validate
+   */
+  public function testValidateOutlineStorage() {
+    $this->bookUninstallValidator->expects($this->once())
+      ->method('hasBookOutlines')
+      ->willReturn(TRUE);
+    $this->bookUninstallValidator->expects($this->never())
+      ->method('hasBookNodes');
+
+    $module = 'book';
+    $expected = ['To uninstall Book, delete all content that is part of a book'];
+    $reasons = $this->bookUninstallValidator->validate($module);
+    $this->assertSame($expected, $this->castSafeStrings($reasons));
+  }
+
+}