You are here

public function RevisionBasicUITest::testRevisionHistory in Entity API 8

Same name and namespace in other branches
  1. 8.0 tests/src/Kernel/RevisionBasicUITest.php \Drupal\Tests\entity\Kernel\RevisionBasicUITest::testRevisionHistory()

Tests the revision history controller.

File

tests/src/Kernel/RevisionBasicUITest.php, line 49

Class

RevisionBasicUITest
@group entity

Namespace

Drupal\Tests\entity\Kernel

Code

public function testRevisionHistory() {
  $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();

  /** @var \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel */
  $http_kernel = $this->container
    ->get('http_kernel');
  $request = Request::create($revision
    ->toUrl('version-history')
    ->toString());
  $response = $http_kernel
    ->handle($request);
  $this
    ->assertEquals(403, $response
    ->getStatusCode());
  $role_admin = Role::create([
    'id' => 'test_role_admin',
  ]);
  $role_admin
    ->grantPermission('administer entity_test_enhanced');
  $role_admin
    ->save();
  $role = Role::create([
    'id' => 'test_role',
  ]);
  $role
    ->grantPermission('view all entity_test_enhanced revisions');
  $role
    ->grantPermission('administer entity_test_enhanced');
  $role
    ->save();
  $user_admin = User::create([
    'name' => 'Test administrator',
  ]);
  $user_admin
    ->addRole($role_admin
    ->id());
  $user_admin
    ->save();
  $this->container
    ->get('account_switcher')
    ->switchTo($user_admin);
  $request = Request::create($revision
    ->toUrl('version-history')
    ->toString());
  $response = $http_kernel
    ->handle($request);
  $this
    ->assertEquals(200, $response
    ->getStatusCode());
  $user = User::create([
    'name' => 'Test editor',
  ]);
  $user
    ->addRole($role
    ->id());
  $user
    ->save();
  $this->container
    ->get('account_switcher')
    ->switchTo($user);
  $request = Request::create($revision
    ->toUrl('version-history')
    ->toString());
  $response = $http_kernel
    ->handle($request);
  $this
    ->assertEquals(200, $response
    ->getStatusCode());

  // This ensures that the default revision is still the first revision.
  $this
    ->assertTrue(strpos($response
    ->getContent(), 'entity_test_enhanced/1/revisions/2/view') !== FALSE);
  $this
    ->assertTrue(strpos($response
    ->getContent(), 'entity_test_enhanced/1') !== FALSE);

  // Publish a new revision.
  $revision = clone $entity;
  $revision->name->value = 'rev 3';
  $revision
    ->setNewRevision(TRUE);
  $revision
    ->isDefaultRevision(TRUE);
  $revision
    ->save();
  $request = Request::create($revision
    ->toUrl('version-history')
    ->toString());
  $response = $http_kernel
    ->handle($request);
  $this
    ->assertEquals(200, $response
    ->getStatusCode());

  // The first revision row should now include a revert link.
  $this
    ->assertTrue(strpos($response
    ->getContent(), 'entity_test_enhanced/1/revisions/1/revert') !== FALSE);
}