Version 1
[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->url('version-history'));
61     $response = $http_kernel->handle($request);
62     $this->assertEquals(403, $response->getStatusCode());
63
64     $role = Role::create(['id' => 'test_role']);
65     $role->grantPermission('view all entity_test_enhanced revisions');
66     $role->grantPermission('administer entity_test_enhanced');
67     $role->save();
68
69     $user = User::create([
70       'name' => 'Test user',
71     ]);
72     $user->addRole($role->id());
73     \Drupal::service('account_switcher')->switchTo($user);
74
75     $request = Request::create($revision->url('version-history'));
76     $response = $http_kernel->handle($request);
77     $this->assertEquals(200, $response->getStatusCode());
78
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);
82
83     // Publish a new revision.
84     $revision = clone $entity;
85     $revision->name->value = 'rev 3';
86     $revision->setNewRevision(TRUE);
87     $revision->isDefaultRevision(TRUE);
88     $revision->save();
89
90     $request = Request::create($revision->url('version-history'));
91     $response = $http_kernel->handle($request);
92     $this->assertEquals(200, $response->getStatusCode());
93
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);
96   }
97
98   public function testRevisionView() {
99     $entity = EnhancedEntity::create([
100       'name' => 'rev 1',
101       'type' => 'default',
102     ]);
103     $entity->save();
104
105     $revision = clone $entity;
106     $revision->name->value = 'rev 2';
107     $revision->setNewRevision(TRUE);
108     $revision->isDefaultRevision(FALSE);
109     $revision->save();
110
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());
116
117     $role = Role::create(['id' => 'test_role']);
118     $role->grantPermission('view all entity_test_enhanced revisions');
119     $role->grantPermission('administer entity_test_enhanced');
120     $role->save();
121
122     $user = User::create([
123       'name' => 'Test user',
124     ]);
125     $user->addRole($role->id());
126     \Drupal::service('account_switcher')->switchTo($user);
127
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());
133   }
134
135   public function testRevisionRevert() {
136     $entity = EnhancedEntity::create([
137       'name' => 'rev 1',
138       'type' => 'entity_test_enhance',
139     ]);
140     $entity->save();
141     $entity->name->value = 'rev 2';
142     $entity->setNewRevision(TRUE);
143     $entity->isDefaultRevision(TRUE);
144     $entity->save();
145
146     $role = Role::create(['id' => 'test_role']);
147     $role->grantPermission('administer entity_test_enhanced');
148     $role->grantPermission('revert all entity_test_enhanced revisions');
149     $role->save();
150
151     $user = User::create([
152       'name' => 'Test user',
153     ]);
154     $user->addRole($role->id());
155     \Drupal::service('account_switcher')->switchTo($user);
156
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());
162   }
163
164 }