You are here

RevisionRouteAccessTest.php in Entity API 8

File

tests/src/Functional/RevisionRouteAccessTest.php
View source
<?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 $defaultTheme = 'stark';

  /**
   * {@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);
  }

}

Classes

Namesort descending Description
RevisionRouteAccessTest Tests the revision route access check.