content_entity_base-8.x-1.x-dev/tests/src/Kernel/RevisionUiTest.php
tests/src/Kernel/RevisionUiTest.php
<?php
namespace Drupal\Tests\content_entity_base\Kernel;
use Drupal\ceb_test\Entity\CebTestContent;
use Drupal\user\Entity\User;
use Symfony\Component\HttpFoundation\Request;
/**
* Tests the revision UI support of content_entity_base.
*
* @group content_entity_base
*/
class RevisionUiTest extends CEBKernelTestBase {
/**
* @var \Symfony\Component\HttpKernel\HttpKernelInterface
*/
protected $httpKernel;
/**
* @var \Drupal\ceb_test\Entity\CebTestContentType
*/
protected $bundle;
/**
* {@inheritdoc}
*/
protected function setUp() {
parent::setUp();
$this->installConfig('system');
\Drupal::service('router.builder')->rebuild();
$this->httpKernel = \Drupal::service('http_kernel');
$this->createFirstBundle();
$root_user = User::create([
'name' => 'admin',
]);
$root_user->save();
}
public function testPages() {
/** @var \Drupal\Core\Session\AccountSwitcherInterface $account_switcher */
$account_switcher = \Drupal::service('account_switcher');
$entity = CebTestContent::create([
'type' => $this->getFirstBundleID(),
]);
$entity->save();
$user = $this->drupalCreateUser(['administer ceb_test_content']);
$account_switcher->switchTo($user);
$response = $this->httpKernel->handle(Request::create($entity->url('canonical')));
$this->assertEquals(200, $response->getStatusCode());
$response = $this->httpKernel->handle(Request::create($entity->url('add-page')));
// Redirects automatically to the right form.
$this->assertEquals(302, $response->getStatusCode());
$response = $this->httpKernel->handle(Request::create($entity->url('edit-form')));
$this->assertEquals(200, $response->getStatusCode());
}
public function testRevisionViewPage() {
/** @var \Drupal\Core\Session\AccountSwitcherInterface $account_switcher */
$account_switcher = \Drupal::service('account_switcher');
$entity = $this->createTestEntity()->set('name', 'original name');
$entity->save();
$old_revision = clone $entity;
$old_revision->isDefaultRevision(FALSE);
$entity->setNewRevision(TRUE);
$entity->isDefaultRevision(TRUE);
$entity->name->value = 'revision name';
$entity->save();
$response = $this->httpKernel->handle(Request::create($old_revision->url('revision')));
$this->assertEquals(403, $response->getStatusCode());
$user = $this->drupalCreateUser(['access ceb_test_content', "view all ceb_test_content revisions"]);
$account_switcher->switchTo($user);
$response = $this->httpKernel->handle(Request::create($old_revision->url('revision')));
$this->assertEquals(200, $response->getStatusCode());
$this->setRawContent($response->getContent());
$date = \Drupal::service('date.formatter')->format($entity->getRevisionCreationTime());
$title = "Revision of original name from $date | ";
$this->assertTitle($title);
$this->assertRaw('<h1>Revision of <em class="placeholder">original name</em>');
}
public function testRevisionHistoryPagesWithMoreThanOneRevision() {
/** @var \Drupal\Core\Session\AccountSwitcherInterface $account_switcher */
$account_switcher = \Drupal::service('account_switcher');
$entity = $this->createTestEntity()->setRevisionCreationTime(NULL);
$entity->save();
$first_revision_id = $entity->getRevisionId();
$entity->setNewRevision(TRUE);
$entity->set('name', $this->randomString())
->setRevisionCreationTime(1420070400)
->save();
$user = $this->drupalCreateUser(['access ceb_test_content']);
$account_switcher->switchTo($user);
$response = $this->httpKernel->handle(Request::create($entity->url('version-history')));
$this->assertEquals(403, $response->getStatusCode());
$user = $this->drupalCreateUser(['access ceb_test_content', 'view all ceb_test_content revisions']);
$account_switcher->switchTo($user);
$response = $this->httpKernel->handle(Request::create($entity->url('version-history')));
$this->assertEquals(200, $response->getStatusCode());
$this->setRawContent($response->getContent());
$this->assertText('Current revision');
// Ensure that we have a link to the current and prevision revision.
$this->assertLinkByHref($entity->url('canonical'));
$this->assertLinkByHref($entity->url('revision'));
$old_revision = \Drupal::entityTypeManager()->getStorage('ceb_test_content')->loadRevision($first_revision_id);
$this->assertLinkByHref($old_revision->url('revision'));
// Make sure null timestamps don't cause an error.
$this->assertText('Unknown revision date');
}
}
