multiversion-8.x-1.0-beta34/tests/src/Functional/SequenceIndexTest.php
tests/src/Functional/SequenceIndexTest.php
<?php
namespace Drupal\Tests\multiversion\Functional;
use Drupal\entity_test\Entity\EntityTestRev;
/**
* Test the entity sequence functionality.
*
* @group multiversion
*/
class SequenceIndexTest extends MultiversionFunctionalTestBase {
/**
* @var \Drupal\multiversion\Entity\Index\SequenceIndexInterface
*/
protected $sequenceIndex;
protected function setUp() {
parent::setUp();
$this->sequenceIndex = \Drupal::service('multiversion.entity_index.sequence');
}
public function testRecord() {
$entity = EntityTestRev::create();
// We don't want to save the entity and trigger the hooks in the storage
// controller. We just want to test the sequence storage here, so we mock
// entity IDs here.
$expected = [
'entity_type_id' => 'entity_test_rev',
'entity_id' => 1,
'entity_uuid' => $entity->uuid(),
'revision_id' => 1,
'deleted' => FALSE,
'rev' => FALSE,
'local' => (boolean) $entity->getEntityType()->get('local'),
'is_stub' => FALSE,
];
$entity->id->value = $expected['entity_id'];
$entity->revision_id->value = $expected['revision_id'];
$entity->_deleted->value = $expected['deleted'];
$entity->_rev->value = $expected['rev'];
$values = $this->sequenceIndex->getRange(3);
$this->assertEqual(0, count($values), 'There are 0 index entries');
$this->sequenceIndex->add($entity);
$expected['seq'] = $this->multiversionManager->lastSequenceId();
// We should have one entity_test_rev.
$values = $this->sequenceIndex->getRange(4);
$this->assertEqual(1, count($values), 'One new index entry was added.');
foreach ($expected as $key => $value) {
$this->assertIdentical($value, $values[0][$key], "Index entry key $key have value $value");
}
$entity = EntityTestRev::create();
$workspace_name = $this->randomMachineName();
/** @var \Drupal\Core\Entity\EntityStorageInterface $workspace_storage */
$workspace_storage = $this->container->get('entity.manager')->getStorage('workspace');
$workspace_storage->create(['machine_name' => $workspace_name, 'type' => 'basic']);
// Generate a new sequence ID.
$this->sequenceIndex->useWorkspace($workspace_name)->add($entity);
$values = $this->sequenceIndex->getRange(3);
$this->assertEqual(1, count($values), 'One index entry was added to the new workspace.');
}
}
