/**
  * Test enhanced entity revision routes access.
  */
 public function testRevisionRouteAccess()
 {
     $entity = EnhancedEntity::create(['name' => 'rev 1', 'type' => 'default']);
     $entity->save();
     $revision = clone $entity;
     $revision->name->value = 'rev 2';
     $revision->setNewRevision(TRUE);
     $revision->isDefaultRevision(FALSE);
     $revision->save();
     $this->drupalGet('/entity_test_enhanced/1/revisions');
     $this->assertSession()->statusCodeEquals(200);
     $this->assertSession()->responseContains('Revisions');
     $collection_link = $this->getSession()->getPage()->findLink('Entity test with enhancements');
     $collection_link->click();
     $this->assertSession()->addressEquals('/entity_test_enhanced');
     $this->assertSession()->responseContains('Edit');
     $edit_link = $this->getSession()->getPage()->findLink('Edit');
     $edit_link->click();
     $this->assertSession()->addressEquals('/entity_test_enhanced/1/edit');
     // Check if we have revision tab link on edit page.
     $this->getSession()->getPage()->findLink('Revisions')->click();
     $this->assertSession()->addressEquals('/entity_test_enhanced/1/revisions');
     $this->drupalGet('/entity_test_enhanced/1/revisions/2/view');
     $this->assertSession()->statusCodeEquals(200);
     $this->assertSession()->responseContains('rev 2');
     $revisions_link = $this->getSession()->getPage()->findLink('Revisions');
     $revisions_link->click();
     $this->assertSession()->addressEquals('/entity_test_enhanced/1/revisions');
     $this->assertSession()->statusCodeEquals(200);
 }
 public function testRevisionView()
 {
     $entity = EnhancedEntity::create(['name' => 'rev 1', 'type' => 'default']);
     $entity->save();
     $revision = clone $entity;
     $revision->name->value = 'rev 2';
     $revision->setNewRevision(TRUE);
     $revision->isDefaultRevision(FALSE);
     $revision->save();
     /** @var \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel */
     $http_kernel = \Drupal::service('http_kernel');
     $request = Request::create($revision->url('revision'));
     $response = $http_kernel->handle($request);
     $this->assertEquals(403, $response->getStatusCode());
     $role = Role::create(['id' => 'test_role']);
     $role->grantPermission('view all entity_test_enhanced revisions');
     $role->grantPermission('administer entity_test_enhanced');
     $role->save();
     $user = User::create(['name' => 'Test user']);
     $user->addRole($role->id());
     \Drupal::service('account_switcher')->switchTo($user);
     $request = Request::create($revision->url('revision'));
     $response = $http_kernel->handle($request);
     $this->assertEquals(200, $response->getStatusCode());
     $this->assertNotContains('rev 1', $response->getContent());
     $this->assertContains('rev 2', $response->getContent());
 }
 /**
  * Tests the add page.
  */
 public function testForm()
 {
     $entities = [];
     $selection = [];
     for ($i = 0; $i < 2; $i++) {
         $entity = EnhancedEntity::create(['type' => 'default']);
         $entity->save();
         $entities[$entity->id()] = $entity;
         $langcode = $entity->language()->getId();
         $selection[$entity->id()][$langcode] = $langcode;
     }
     // Add the selection to the tempstore just like DeleteAction would.
     $tempstore = \Drupal::service('user.private_tempstore')->get('entity_delete_multiple_confirm');
     $tempstore->set($this->account->id(), $selection);
     $this->drupalGet('/entity_test_enhanced/delete');
     $assert = $this->assertSession();
     $assert->statusCodeEquals(200);
     $assert->elementTextContains('css', '.page-title', 'Are you sure you want to delete these items?');
     $delete_button = $this->getSession()->getPage()->findButton('Delete');
     $delete_button->click();
     $assert = $this->assertSession();
     $assert->addressEquals('/entity_test_enhanced');
     $assert->responseContains('Deleted 2 items.');
     \Drupal::entityTypeManager()->getStorage('entity_test_enhanced')->resetCache();
     $remaining_entities = EnhancedEntity::loadMultiple(array_keys($selection));
     $this->assertEmpty($remaining_entities);
 }
 public function testAction()
 {
     /** @var \Drupal\system\ActionConfigEntityInterface $action */
     $action = Action::create(['id' => 'enhanced_entity_delete_action', 'label' => 'Delete enhanced entity', 'plugin' => 'entity_delete_action:entity_test_enhanced']);
     $status = $action->save();
     $this->assertEquals(SAVED_NEW, $status);
     $this->assertInstanceOf(DeleteAction::class, $action->getPlugin());
     $entities = [];
     for ($i = 0; $i < 2; $i++) {
         $entity = EnhancedEntity::create(['type' => 'default']);
         $entity->save();
         $entities[$entity->id()] = $entity;
     }
     $action->execute($entities);
     // Confirm that the entity ids and langcodes are now in the tempstore.
     $tempstore = \Drupal::service('user.private_tempstore')->get('entity_delete_multiple_confirm');
     $selection = $tempstore->get($this->user->id());
     $this->assertEquals(array_keys($entities), array_keys($selection));
     $this->assertEquals([['en' => 'en'], ['en' => 'en']], array_values($selection));
 }
 public function testEntityRevisionLog()
 {
     $user = User::create(['name' => 'user']);
     $user->save();
     $user2 = User::create(['name' => 'user2']);
     $user2->save();
     /** @var \Drupal\entity\Revision\EntityRevisionLogInterface $entity */
     $entity = EnhancedEntity::create(['type' => 'default', 'revision_user' => $user->id(), 'revision_created' => 1447941735, 'revision_log_message' => 'Test message']);
     $this->assertEquals(1447941735, $entity->getRevisionCreationTime());
     $this->assertEquals($user->id(), $entity->getRevisionUser()->id());
     $this->assertEquals('Test message', $entity->getRevisionLogMessage());
     $entity->setRevisionCreationTime(1234567890);
     $this->assertEquals(1234567890, $entity->getRevisionCreationTime());
     $entity->setRevisionUser($user2);
     $this->assertEquals($user2->id(), $entity->getRevisionUser()->id());
     $this->assertEquals($user2->id(), $entity->getRevisionUserId());
     $entity->setRevisionUserId($user->id());
     $this->assertEquals($user->id(), $entity->getRevisionUserId());
     $entity->setRevisionLogMessage('Giraffe!');
     $this->assertEquals('Giraffe!', $entity->getRevisionLogMessage());
 }