Added Entity and Entity Reference Revisions which got dropped somewhere along the...
[yaffs-website] / web / modules / contrib / entity / tests / src / Functional / RevisionRouteAccessTest.php
diff --git a/web/modules/contrib/entity/tests/src/Functional/RevisionRouteAccessTest.php b/web/modules/contrib/entity/tests/src/Functional/RevisionRouteAccessTest.php
new file mode 100644 (file)
index 0000000..c40a830
--- /dev/null
@@ -0,0 +1,91 @@
+<?php
+
+namespace Drupal\Tests\entity\Functional;
+
+use Drupal\entity_module_test\Entity\EnhancedEntity;
+use Drupal\Tests\block\Traits\BlockCreationTrait;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Tests the revision route access check.
+ *
+ * @group entity
+ *
+ * @runTestsInSeparateProcesses
+ *
+ * @preserveGlobalState disabled
+ */
+class RevisionRouteAccessTest extends BrowserTestBase {
+
+  use BlockCreationTrait;
+
+  /**
+   * The current user.
+   *
+   * @var \Drupal\Core\Session\AccountInterface
+   */
+  protected $account;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['entity_module_test', 'user', 'entity', 'block'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->placeBlock('local_tasks_block');
+    $this->placeBlock('system_breadcrumb_block');
+
+    $this->account = $this->drupalCreateUser([
+      'administer entity_test_enhanced',
+      'view all entity_test_enhanced revisions',
+    ]);
+
+    $this->drupalLogin($this->account);
+  }
+
+  /**
+   * Test enhanced entity revision routes access.
+   */
+  public function testRevisionRouteAccess() {
+    $entity = EnhancedEntity::create([
+      'name' => 'rev 1',
+      'type' => 'default',
+    ]);
+    $entity->save();
+
+    $revision = clone $entity;
+    $revision->name->value = 'rev 2';
+    $revision->setNewRevision(TRUE);
+    $revision->isDefaultRevision(FALSE);
+    $revision->save();
+
+    $this->drupalGet('/entity_test_enhanced/1/revisions');
+    $this->assertSession()->statusCodeEquals(200);
+    $this->assertSession()->responseContains('Revisions');
+    $collection_link = $this->getSession()->getPage()->findLink('Enhanced entities');
+    $collection_link->click();
+    $this->assertSession()->addressEquals('/entity_test_enhanced');
+    $this->assertSession()->responseContains('Edit');
+    $edit_link = $this->getSession()->getPage()->findLink('Edit');
+    $edit_link->click();
+    $this->assertSession()->addressEquals('/entity_test_enhanced/1/edit');
+    // Check if we have revision tab link on edit page.
+    $this->getSession()->getPage()->findLink('Revisions')->click();
+    $this->assertSession()->addressEquals('/entity_test_enhanced/1/revisions');
+    $this->drupalGet('/entity_test_enhanced/1/revisions/2/view');
+    $this->assertSession()->statusCodeEquals(200);
+    $this->assertSession()->responseContains('rev 2');
+    $revisions_link = $this->getSession()->getPage()->findLink('Revisions');
+    $revisions_link->click();
+    $this->assertSession()->addressEquals('/entity_test_enhanced/1/revisions');
+    $this->assertSession()->statusCodeEquals(200);
+  }
+
+}