multiversion-8.x-1.0-beta34/tests/src/Functional/RevisionFieldTest.php
tests/src/Functional/RevisionFieldTest.php
<?php namespace Drupal\Tests\multiversion\Functional; use Drupal\Core\Entity\EntityStorageInterface; use Drupal\multiversion\Plugin\Field\FieldType\RevisionItem; /** * Test the creation and operation of the Revision field. * * @group multiversion */ class RevisionFieldTest extends FieldTestBase { /** * {@inheritdoc} */ protected $fieldName = '_rev'; /** * {@inheritdoc} */ protected $createdEmpty = FALSE; /** * {@inheritdoc} */ protected $itemClass = '\Drupal\multiversion\Plugin\Field\FieldType\RevisionItem'; public function testFieldOperations() { foreach ($this->entityTypes as $entity_type_id => $values) { $storage = $this->entityTypeManager->getStorage($entity_type_id); $entity = $this->createTestEntity($storage, $values); // Test normal save operations. $this->assertTrue($entity->_rev->new_edit, 'New edit flag is TRUE after creation.'); $revisions = $entity->_rev->revisions; $this->assertTrue((is_array($revisions) && empty($revisions)), 'Revisions property is empty after creation.'); $this->assertTrue((strpos($entity->_rev->value, '0') === 0), 'Revision index was 0 after creation.'); $entity->save(); $first_rev = $entity->_rev->value; $this->assertTrue((strpos($first_rev, '1') === 0), 'Revision index was 1 after first save.'); // Simulate the input from a replication. $entity = $this->createTestEntity($storage, $values); $sample_rev = RevisionItem::generateSampleValue($entity->_rev->getFieldDefinition()); $entity->_rev->value = $sample_rev['value']; $entity->_rev->new_edit = FALSE; $entity->_rev->revisions = [$sample_rev['revisions'][0]]; $entity->save(); // Assert that the revision token did not change. $this->assertEqual($entity->_rev->value, $sample_rev['value']); // Test the is_stub property. $entity = $this->createTestEntity($storage, $values); $entity->save(); $entity = $storage->load($entity->id()); $this->assertIdentical(FALSE, $entity->_rev->is_stub, 'Entity saved normally is loaded as not stub.'); $entity = $this->createTestEntity($storage, $values); $entity->_rev->is_stub = FALSE; $entity->save(); $entity = $storage->load($entity->id()); $this->assertIdentical(FALSE, $entity->_rev->is_stub, 'Entity saved explicitly as not stub is loaded as not stub.'); $entity = $this->createTestEntity($storage, $values); $entity->_rev->is_stub = TRUE; $entity->save(); $entity = $storage->load($entity->id()); $this->assertIdentical(TRUE, $entity->_rev->is_stub, 'Entity saved explicitly as stub is loaded as stub.'); $this->assertEqual($entity->_rev->value, '0-00000000000000000000000000000000', 'Entity has the revision ID of a stub.'); $entity->_rev->is_stub = FALSE; $this->assertFalse($entity->_rev->is_stub, 'Setting an explicit value as not stub works after an entity has been saved.'); } } protected function createTestEntity(EntityStorageInterface $storage, array $values) { switch ($storage->getEntityTypeId()) { case 'block_content': $values['info'] = $this->randomMachineName(); break; } return $storage->create($values); } }