multiversion-8.x-1.0-beta34/tests/src/Functional/MultiversionManagerTest.php

tests/src/Functional/MultiversionManagerTest.php
<?php

namespace Drupal\Tests\multiversion\Functional;

use Drupal\Core\Entity\ContentEntityTypeInterface;
use Drupal\entity_test\Entity\EntityTestRev;
use Drupal\Tests\BrowserTestBase;

/**
 * Test the MultiversionManager class.
 *
 * @group multiversion
 */
class MultiversionManagerTest extends BrowserTestBase {

  const REVISION_HASH_REGEX = '[0-9a-f]{32}';

  protected $strictConfigSchema = FALSE;

  protected static $modules = ['multiversion', 'entity_test'];

  /**
   * @var \Drupal\multiversion\MultiversionManager
   */
  protected $multiversionManager;

  protected function setUp() {
    parent::setUp();
    $this->multiversionManager = \Drupal::service('multiversion.manager');
  }

  protected function extractRevisionHash($rev) {
    preg_match('/\d\-(' . self::REVISION_HASH_REGEX . ')/', $rev, $matches);
    return isset($matches[1]) ? $matches[1] : FALSE;
  }

  public function assertRevisionId($index, $value, $message) {
    $this->assertTrue(preg_match('/' . $index . '\-' . self::REVISION_HASH_REGEX . '/', $value), $message);
  }

  public function testRevisionIdGeneration() {
    $entity = EntityTestRev::create();
    $first_rev = $this->multiversionManager->newRevisionId($entity, 0);
    $this->assertRevisionId(1, $first_rev, 'First revision ID was generated correctly.');

    $new_rev = $this->multiversionManager->newRevisionId($entity, 0);
    $this->assertEqual($first_rev, $new_rev, 'Identical revision IDs with same input parameters.');

    $second_rev = $this->multiversionManager->newRevisionId($entity, 1);
    $this->assertRevisionId(2, $second_rev, 'Second revision ID was generated correctly.');

    $this->assertEqual($this->extractRevisionHash($first_rev), $this->extractRevisionHash($second_rev), 'First and second revision hashes was identical (entity did not change).');

    $revs = [$first_rev];

    $test_entity = clone $entity;
    $test_entity->_rev->value = $first_rev;
    $revs[] = $this->multiversionManager->newRevisionId($test_entity, 0);
    $this->assertTrue(count($revs) == count(array_unique($revs)), 'Revision ID varies on old revision.');

    $test_entity = clone $entity;
    $test_entity->name = $this->randomMachineName();
    $revs[] = $this->multiversionManager->newRevisionId($test_entity, 0);
    $this->assertTrue(count($revs) == count(array_unique($revs)), 'Revision ID varies on entity fields.');

    $test_entity = clone $entity;
    $test_entity->_deleted->value = TRUE;
    $revs[] = $this->multiversionManager->newRevisionId($test_entity, 0);
    $this->assertTrue(count($revs) == count(array_unique($revs)), 'Revision ID varies on deleted flag.');
  }
  
  public function testGetSupportedEntityTypes() {
    foreach ($this->multiversionManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) {
      $label = $entity_type->get('label');
      $this->assertTrue($entity_type instanceof ContentEntityTypeInterface, "$label is an instance of ContentEntityTypeInterface");
    }
  }

}

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

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