Upgraded imagemagick and manually altered pdf to image module to handle changes....
[yaffs-website] / web / modules / contrib / entity / tests / src / Kernel / RevisionBasicUITest.php
1 <?php
2
3 namespace Drupal\Tests\entity\Kernel;
4
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;
11
12 /**
13  * @group entity
14  */
15 class RevisionBasicUITest extends KernelTestBase {
16
17   /**
18    * {@inheritdoc}
19    */
20   public static $modules = ['entity_module_test', 'system', 'user', 'entity'];
21
22   /**
23    * {@inheritdoc}
24    */
25   protected function setUp() {
26     parent::setUp();
27
28     $this->installEntitySchema('user');
29     $this->installEntitySchema('entity_test_enhanced');
30     $this->installSchema('system', 'router');
31     $this->installConfig(['system']);
32
33     $bundle = EnhancedEntityBundle::create([
34       'id' => 'default',
35       'label' => 'Default',
36     ]);
37     $bundle->save();
38
39     \Drupal::service('router.builder')->rebuild();
40   }
41
42   /**
43    * Tests the revision history controller.
44    */
45   public function testRevisionHistory() {
46     $entity = EnhancedEntity::create([
47       'name' => 'rev 1',
48       'type' => 'default',
49     ]);
50     $entity->save();
51
52     $revision = clone $entity;
53     $revision->name->value = 'rev 2';
54     $revision->setNewRevision(TRUE);
55     $revision->isDefaultRevision(FALSE);
56     $revision->save();
57
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());
63
64     $role_admin = Role::create(['id' => 'test_role_admin']);
65     $role_admin->grantPermission('administer entity_test_enhanced');
66     $role_admin->save();
67
68     $role = Role::create(['id' => 'test_role']);
69     $role->grantPermission('view all entity_test_enhanced revisions');
70     $role->grantPermission('administer entity_test_enhanced');
71     $role->save();
72
73     $user_admin = User::create([
74       'name' => 'Test user admin',
75     ]);
76     $user_admin->addRole($role_admin->id());
77     \Drupal::service('account_switcher')->switchTo($user_admin);
78
79     $request = Request::create($revision->toUrl('version-history')->toString());
80     $response = $http_kernel->handle($request);
81     $this->assertEquals(200, $response->getStatusCode());
82
83     $user = User::create([
84       'name' => 'Test user',
85     ]);
86     $user->addRole($role->id());
87     \Drupal::service('account_switcher')->switchTo($user);
88
89     $request = Request::create($revision->toUrl('version-history')->toString());
90     $response = $http_kernel->handle($request);
91     $this->assertEquals(200, $response->getStatusCode());
92
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);
96
97     // Publish a new revision.
98     $revision = clone $entity;
99     $revision->name->value = 'rev 3';
100     $revision->setNewRevision(TRUE);
101     $revision->isDefaultRevision(TRUE);
102     $revision->save();
103
104     $request = Request::create($revision->toUrl('version-history')->toString());
105     $response = $http_kernel->handle($request);
106     $this->assertEquals(200, $response->getStatusCode());
107
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);
110   }
111
112   public function testRevisionView() {
113     $entity = EnhancedEntity::create([
114       'name' => 'rev 1',
115       'type' => 'default',
116     ]);
117     $entity->save();
118
119     $revision = clone $entity;
120     $revision->name->value = 'rev 2';
121     $revision->setNewRevision(TRUE);
122     $revision->isDefaultRevision(FALSE);
123     $revision->save();
124
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());
130
131     $role_admin = Role::create(['id' => 'test_role_admin']);
132     $role_admin->grantPermission('administer entity_test_enhanced');
133     $role_admin->save();
134
135     $role = Role::create(['id' => 'test_role']);
136     $role->grantPermission('view all entity_test_enhanced revisions');
137     $role->grantPermission('administer entity_test_enhanced');
138     $role->save();
139
140     $user_admin = User::create([
141       'name' => 'Test user admin',
142     ]);
143     $user_admin->addRole($role_admin->id());
144     \Drupal::service('account_switcher')->switchTo($user_admin);
145
146     $request = Request::create($revision->toUrl('version-history')->toString());
147     $response = $http_kernel->handle($request);
148     $this->assertEquals(200, $response->getStatusCode());
149
150     $user = User::create([
151       'name' => 'Test user',
152     ]);
153     $user->addRole($role->id());
154     \Drupal::service('account_switcher')->switchTo($user);
155
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());
161   }
162
163   public function testRevisionRevert() {
164     $entity = EnhancedEntity::create([
165       'name' => 'rev 1',
166       'type' => 'entity_test_enhance',
167     ]);
168     $entity->save();
169     $entity->name->value = 'rev 2';
170     $entity->setNewRevision(TRUE);
171     $entity->isDefaultRevision(TRUE);
172     $entity->save();
173
174     $role = Role::create(['id' => 'test_role']);
175     $role->grantPermission('administer entity_test_enhanced');
176     $role->grantPermission('revert all entity_test_enhanced revisions');
177     $role->save();
178
179     $user = User::create([
180       'name' => 'Test user',
181     ]);
182     $user->addRole($role->id());
183     \Drupal::service('account_switcher')->switchTo($user);
184
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());
190   }
191
192 }