3 namespace Drupal\Tests\entity\Kernel;
5 use Drupal\entity_module_test\Entity\EnhancedEntity;
6 use Drupal\KernelTests\KernelTestBase;
7 use Drupal\user\Entity\Role;
8 use Drupal\user\Entity\User;
9 use Symfony\Component\HttpFoundation\Request;
14 class RevisionBasicUITest extends KernelTestBase {
19 public static $modules = ['entity_module_test', 'system', 'user', 'entity'];
24 protected function setUp() {
27 $this->installEntitySchema('user');
28 $this->installEntitySchema('entity_test_enhanced');
29 $this->installSchema('system', 'router');
30 $this->installConfig(['system']);
32 \Drupal::service('router.builder')->rebuild();
36 * Tests the revision history controller.
38 public function testRevisionHistory() {
39 $entity = EnhancedEntity::create([
45 $revision = clone $entity;
46 $revision->name->value = 'rev 2';
47 $revision->setNewRevision(TRUE);
48 $revision->isDefaultRevision(FALSE);
51 /** @var \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel */
52 $http_kernel = \Drupal::service('http_kernel');
53 $request = Request::create($revision->toUrl('version-history')->toString());
54 $response = $http_kernel->handle($request);
55 $this->assertEquals(403, $response->getStatusCode());
57 $role_admin = Role::create(['id' => 'test_role_admin']);
58 $role_admin->grantPermission('administer entity_test_enhanced');
61 $role = Role::create(['id' => 'test_role']);
62 $role->grantPermission('view all entity_test_enhanced revisions');
63 $role->grantPermission('administer entity_test_enhanced');
66 $user_admin = User::create([
67 'name' => 'Test user admin',
69 $user_admin->addRole($role_admin->id());
70 \Drupal::service('account_switcher')->switchTo($user_admin);
72 $request = Request::create($revision->toUrl('version-history')->toString());
73 $response = $http_kernel->handle($request);
74 $this->assertEquals(200, $response->getStatusCode());
76 $user = User::create([
77 'name' => 'Test user',
79 $user->addRole($role->id());
80 \Drupal::service('account_switcher')->switchTo($user);
82 $request = Request::create($revision->toUrl('version-history')->toString());
83 $response = $http_kernel->handle($request);
84 $this->assertEquals(200, $response->getStatusCode());
86 // This ensures that the default revision is still the first revision.
87 $this->assertTrue(strpos($response->getContent(), 'entity_test_enhanced/1/revisions/2/view') !== FALSE);
88 $this->assertTrue(strpos($response->getContent(), 'entity_test_enhanced/1') !== FALSE);
90 // Publish a new revision.
91 $revision = clone $entity;
92 $revision->name->value = 'rev 3';
93 $revision->setNewRevision(TRUE);
94 $revision->isDefaultRevision(TRUE);
97 $request = Request::create($revision->toUrl('version-history')->toString());
98 $response = $http_kernel->handle($request);
99 $this->assertEquals(200, $response->getStatusCode());
101 // The first revision row should now include a revert link.
102 $this->assertTrue(strpos($response->getContent(), 'entity_test_enhanced/1/revisions/1/revert') !== FALSE);
105 public function testRevisionView() {
106 $entity = EnhancedEntity::create([
112 $revision = clone $entity;
113 $revision->name->value = 'rev 2';
114 $revision->setNewRevision(TRUE);
115 $revision->isDefaultRevision(FALSE);
118 /** @var \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel */
119 $http_kernel = \Drupal::service('http_kernel');
120 $request = Request::create($revision->toUrl('revision')->toString());
121 $response = $http_kernel->handle($request);
122 $this->assertEquals(403, $response->getStatusCode());
124 $role_admin = Role::create(['id' => 'test_role_admin']);
125 $role_admin->grantPermission('administer entity_test_enhanced');
128 $role = Role::create(['id' => 'test_role']);
129 $role->grantPermission('view all entity_test_enhanced revisions');
130 $role->grantPermission('administer entity_test_enhanced');
133 $user_admin = User::create([
134 'name' => 'Test user admin',
136 $user_admin->addRole($role_admin->id());
137 \Drupal::service('account_switcher')->switchTo($user_admin);
139 $request = Request::create($revision->toUrl('version-history')->toString());
140 $response = $http_kernel->handle($request);
141 $this->assertEquals(200, $response->getStatusCode());
143 $user = User::create([
144 'name' => 'Test user',
146 $user->addRole($role->id());
147 \Drupal::service('account_switcher')->switchTo($user);
149 $request = Request::create($revision->toUrl('revision')->toString());
150 $response = $http_kernel->handle($request);
151 $this->assertEquals(200, $response->getStatusCode());
152 $this->assertNotContains('rev 1', $response->getContent());
153 $this->assertContains('rev 2', $response->getContent());
156 public function testRevisionRevert() {
157 $entity = EnhancedEntity::create([
159 'type' => 'entity_test_enhance',
162 $entity->name->value = 'rev 2';
163 $entity->setNewRevision(TRUE);
164 $entity->isDefaultRevision(TRUE);
167 $role = Role::create(['id' => 'test_role']);
168 $role->grantPermission('administer entity_test_enhanced');
169 $role->grantPermission('revert all entity_test_enhanced revisions');
172 $user = User::create([
173 'name' => 'Test user',
175 $user->addRole($role->id());
176 \Drupal::service('account_switcher')->switchTo($user);
178 /** @var \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel */
179 $http_kernel = \Drupal::service('http_kernel');
180 $request = Request::create($entity->toUrl('revision-revert-form')->toString());
181 $response = $http_kernel->handle($request);
182 $this->assertEquals(200, $response->getStatusCode());