3 namespace Drupal\Tests\entity\Kernel;
5 use Drupal\entity_module_test\Entity\EnhancedEntity;
6 use Drupal\entity_module_test\Entity\EnhancedEntityBundle;
7 use Drupal\KernelTests\KernelTestBase;
8 use Drupal\user\Entity\Role;
9 use Drupal\user\Entity\User;
10 use Symfony\Component\HttpFoundation\Request;
15 class RevisionBasicUITest extends KernelTestBase {
20 public static $modules = ['entity_module_test', 'system', 'user', 'entity'];
25 protected function setUp() {
28 $this->installEntitySchema('user');
29 $this->installEntitySchema('entity_test_enhanced');
30 $this->installSchema('system', 'router');
31 $this->installConfig(['system']);
33 $bundle = EnhancedEntityBundle::create([
39 \Drupal::service('router.builder')->rebuild();
43 * Tests the revision history controller.
45 public function testRevisionHistory() {
46 $entity = EnhancedEntity::create([
52 $revision = clone $entity;
53 $revision->name->value = 'rev 2';
54 $revision->setNewRevision(TRUE);
55 $revision->isDefaultRevision(FALSE);
58 /** @var \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel */
59 $http_kernel = \Drupal::service('http_kernel');
60 $request = Request::create($revision->url('version-history'));
61 $response = $http_kernel->handle($request);
62 $this->assertEquals(403, $response->getStatusCode());
64 $role = Role::create(['id' => 'test_role']);
65 $role->grantPermission('view all entity_test_enhanced revisions');
66 $role->grantPermission('administer entity_test_enhanced');
69 $user = User::create([
70 'name' => 'Test user',
72 $user->addRole($role->id());
73 \Drupal::service('account_switcher')->switchTo($user);
75 $request = Request::create($revision->url('version-history'));
76 $response = $http_kernel->handle($request);
77 $this->assertEquals(200, $response->getStatusCode());
79 // This ensures that the default revision is still the first revision.
80 $this->assertTrue(strpos($response->getContent(), 'entity_test_enhanced/1/revisions/2/view') !== FALSE);
81 $this->assertTrue(strpos($response->getContent(), 'entity_test_enhanced/1') !== FALSE);
83 // Publish a new revision.
84 $revision = clone $entity;
85 $revision->name->value = 'rev 3';
86 $revision->setNewRevision(TRUE);
87 $revision->isDefaultRevision(TRUE);
90 $request = Request::create($revision->url('version-history'));
91 $response = $http_kernel->handle($request);
92 $this->assertEquals(200, $response->getStatusCode());
94 // The first revision row should now include a revert link.
95 $this->assertTrue(strpos($response->getContent(), 'entity_test_enhanced/1/revisions/1/revert') !== FALSE);
98 public function testRevisionView() {
99 $entity = EnhancedEntity::create([
105 $revision = clone $entity;
106 $revision->name->value = 'rev 2';
107 $revision->setNewRevision(TRUE);
108 $revision->isDefaultRevision(FALSE);
111 /** @var \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel */
112 $http_kernel = \Drupal::service('http_kernel');
113 $request = Request::create($revision->url('revision'));
114 $response = $http_kernel->handle($request);
115 $this->assertEquals(403, $response->getStatusCode());
117 $role = Role::create(['id' => 'test_role']);
118 $role->grantPermission('view all entity_test_enhanced revisions');
119 $role->grantPermission('administer entity_test_enhanced');
122 $user = User::create([
123 'name' => 'Test user',
125 $user->addRole($role->id());
126 \Drupal::service('account_switcher')->switchTo($user);
128 $request = Request::create($revision->url('revision'));
129 $response = $http_kernel->handle($request);
130 $this->assertEquals(200, $response->getStatusCode());
131 $this->assertNotContains('rev 1', $response->getContent());
132 $this->assertContains('rev 2', $response->getContent());
135 public function testRevisionRevert() {
136 $entity = EnhancedEntity::create([
138 'type' => 'entity_test_enhance',
141 $entity->name->value = 'rev 2';
142 $entity->setNewRevision(TRUE);
143 $entity->isDefaultRevision(TRUE);
146 $role = Role::create(['id' => 'test_role']);
147 $role->grantPermission('administer entity_test_enhanced');
148 $role->grantPermission('revert all entity_test_enhanced revisions');
151 $user = User::create([
152 'name' => 'Test user',
154 $user->addRole($role->id());
155 \Drupal::service('account_switcher')->switchTo($user);
157 /** @var \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel */
158 $http_kernel = \Drupal::service('http_kernel');
159 $request = Request::create($entity->url('revision-revert-form'));
160 $response = $http_kernel->handle($request);
161 $this->assertEquals(200, $response->getStatusCode());