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');
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc