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->toUrl('version-history')->toString());
61 $response = $http_kernel->handle($request);
62 $this->assertEquals(403, $response->getStatusCode());
64 $role_admin = Role::create(['id' => 'test_role_admin']);
65 $role_admin->grantPermission('administer entity_test_enhanced');
68 $role = Role::create(['id' => 'test_role']);
69 $role->grantPermission('view all entity_test_enhanced revisions');
70 $role->grantPermission('administer entity_test_enhanced');
73 $user_admin = User::create([
74 'name' => 'Test user admin',
76 $user_admin->addRole($role_admin->id());
77 \Drupal::service('account_switcher')->switchTo($user_admin);
79 $request = Request::create($revision->toUrl('version-history')->toString());
80 $response = $http_kernel->handle($request);
81 $this->assertEquals(200, $response->getStatusCode());
83 $user = User::create([
84 'name' => 'Test user',
86 $user->addRole($role->id());
87 \Drupal::service('account_switcher')->switchTo($user);
89 $request = Request::create($revision->toUrl('version-history')->toString());
90 $response = $http_kernel->handle($request);
91 $this->assertEquals(200, $response->getStatusCode());
93 // This ensures that the default revision is still the first revision.
94 $this->assertTrue(strpos($response->getContent(), 'entity_test_enhanced/1/revisions/2/view') !== FALSE);
95 $this->assertTrue(strpos($response->getContent(), 'entity_test_enhanced/1') !== FALSE);
97 // Publish a new revision.
98 $revision = clone $entity;
99 $revision->name->value = 'rev 3';
100 $revision->setNewRevision(TRUE);
101 $revision->isDefaultRevision(TRUE);
104 $request = Request::create($revision->toUrl('version-history')->toString());
105 $response = $http_kernel->handle($request);
106 $this->assertEquals(200, $response->getStatusCode());
108 // The first revision row should now include a revert link.
109 $this->assertTrue(strpos($response->getContent(), 'entity_test_enhanced/1/revisions/1/revert') !== FALSE);
112 public function testRevisionView() {
113 $entity = EnhancedEntity::create([
119 $revision = clone $entity;
120 $revision->name->value = 'rev 2';
121 $revision->setNewRevision(TRUE);
122 $revision->isDefaultRevision(FALSE);
125 /** @var \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel */
126 $http_kernel = \Drupal::service('http_kernel');
127 $request = Request::create($revision->toUrl('revision')->toString());
128 $response = $http_kernel->handle($request);
129 $this->assertEquals(403, $response->getStatusCode());
131 $role_admin = Role::create(['id' => 'test_role_admin']);
132 $role_admin->grantPermission('administer entity_test_enhanced');
135 $role = Role::create(['id' => 'test_role']);
136 $role->grantPermission('view all entity_test_enhanced revisions');
137 $role->grantPermission('administer entity_test_enhanced');
140 $user_admin = User::create([
141 'name' => 'Test user admin',
143 $user_admin->addRole($role_admin->id());
144 \Drupal::service('account_switcher')->switchTo($user_admin);
146 $request = Request::create($revision->toUrl('version-history')->toString());
147 $response = $http_kernel->handle($request);
148 $this->assertEquals(200, $response->getStatusCode());
150 $user = User::create([
151 'name' => 'Test user',
153 $user->addRole($role->id());
154 \Drupal::service('account_switcher')->switchTo($user);
156 $request = Request::create($revision->toUrl('revision')->toString());
157 $response = $http_kernel->handle($request);
158 $this->assertEquals(200, $response->getStatusCode());
159 $this->assertNotContains('rev 1', $response->getContent());
160 $this->assertContains('rev 2', $response->getContent());
163 public function testRevisionRevert() {
164 $entity = EnhancedEntity::create([
166 'type' => 'entity_test_enhance',
169 $entity->name->value = 'rev 2';
170 $entity->setNewRevision(TRUE);
171 $entity->isDefaultRevision(TRUE);
174 $role = Role::create(['id' => 'test_role']);
175 $role->grantPermission('administer entity_test_enhanced');
176 $role->grantPermission('revert all entity_test_enhanced revisions');
179 $user = User::create([
180 'name' => 'Test user',
182 $user->addRole($role->id());
183 \Drupal::service('account_switcher')->switchTo($user);
185 /** @var \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel */
186 $http_kernel = \Drupal::service('http_kernel');
187 $request = Request::create($entity->toUrl('revision-revert-form')->toString());
188 $response = $http_kernel->handle($request);
189 $this->assertEquals(200, $response->getStatusCode());