You are here

public function RevisionBasicUITest::testRevisionView in Entity API 8

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

File

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

Class

RevisionBasicUITest
@group entity

Namespace

Drupal\Tests\entity\Kernel

Code

public function testRevisionView() {
  $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('revision')
    ->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('revision')
    ->toString());
  $response = $http_kernel
    ->handle($request);
  $this
    ->assertEquals(200, $response
    ->getStatusCode());
  $this
    ->assertStringNotContainsString('rev 1', $response
    ->getContent());
  $this
    ->assertStringContainsString('rev 2', $response
    ->getContent());
}