class EntityRevisionTest in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/migrate/tests/src/Unit/destination/EntityRevisionTest.php \Drupal\Tests\migrate\Unit\destination\EntityRevisionTest
Tests entity revision destination.
@group migrate @coversDefaultClass \Drupal\migrate\Plugin\migrate\destination\EntityRevision
Hierarchy
- class \Drupal\Tests\UnitTestCase extends \Drupal\Tests\PHPUnit_Framework_TestCase
- class \Drupal\Tests\migrate\Unit\destination\EntityRevisionTest
Expanded class hierarchy of EntityRevisionTest
File
- core/
modules/ migrate/ tests/ src/ Unit/ destination/ EntityRevisionTest.php, line 22 - Contains \Drupal\Tests\migrate\Unit\destination\EntityRevisionTest.
Namespace
Drupal\Tests\migrate\Unit\destinationView source
class EntityRevisionTest extends UnitTestCase {
/**
* @var \Drupal\migrate\Entity\MigrationInterface
*/
protected $migration;
/**
* @var \Drupal\Core\Entity\EntityStorageInterface
*/
protected $storage;
/**
* @var \Drupal\Core\Entity\EntityManagerInterface
*/
protected $entityManager;
/**
* @var \Drupal\Core\Field\FieldTypePluginManagerInterface
*/
protected $fieldTypeManager;
public function setUp() {
parent::setUp();
// Setup mocks to be used when creating a revision destination.
$this->migration = $this
->prophesize('\\Drupal\\migrate\\Entity\\MigrationInterface');
$this->storage = $this
->prophesize('\\Drupal\\Core\\Entity\\EntityStorageInterface');
$this->entityManager = $this
->prophesize('\\Drupal\\Core\\Entity\\EntityManagerInterface');
$this->fieldTypeManager = $this
->prophesize('\\Drupal\\Core\\Field\\FieldTypePluginManagerInterface');
}
/**
* Test that passed old destination values are used by default.
*
* @covers ::getEntity
*/
public function testGetEntityDestinationValues() {
$destination = $this
->getEntityRevisionDestination([]);
// Return a dummy because we don't care what gets called.
$entity = $this
->prophesize('\\Drupal\\Core\\Entity\\EntityInterface')
->willImplement('\\Drupal\\Core\\Entity\\RevisionableInterface');
// Assert that the first ID from the destination values is used to load the
// entity.
$this->storage
->loadRevision(12)
->shouldBeCalled()
->willReturn($entity
->reveal());
$row = new Row([], []);
$this
->assertEquals($entity
->reveal(), $destination
->getEntity($row, [
12,
13,
]));
}
/**
* Test that revision updates update.
*
* @covers ::getEntity
*/
public function testGetEntityUpdateRevision() {
$destination = $this
->getEntityRevisionDestination([]);
$entity = $this
->prophesize('\\Drupal\\Core\\Entity\\EntityInterface')
->willImplement('\\Drupal\\Core\\Entity\\RevisionableInterface');
$entity_type = $this
->prophesize('\\Drupal\\Core\\Entity\\EntityTypeInterface');
$entity_type
->getKey('id')
->willReturn('nid');
$entity_type
->getKey('revision')
->willReturn('vid');
$this->storage
->getEntityType()
->willReturn($entity_type
->reveal());
// Assert we load the correct revision.
$this->storage
->loadRevision(2)
->shouldBeCalled()
->willReturn($entity
->reveal());
// Make sure its set as an update and not the default revision.
$entity
->setNewRevision(FALSE)
->shouldBeCalled();
$entity
->isDefaultRevision(FALSE)
->shouldBeCalled();
$row = new Row([
'nid' => 1,
'vid' => 2,
], [
'nid' => 1,
'vid' => 2,
]);
$row
->setDestinationProperty('vid', 2);
$this
->assertEquals($entity
->reveal(), $destination
->getEntity($row, []));
}
/**
* Test that new revisions are flagged to be written as new.
*
* @covers ::getEntity
*/
public function testGetEntityNewRevision() {
$destination = $this
->getEntityRevisionDestination([]);
$entity = $this
->prophesize('\\Drupal\\Core\\Entity\\EntityInterface')
->willImplement('\\Drupal\\Core\\Entity\\RevisionableInterface');
$entity_type = $this
->prophesize('\\Drupal\\Core\\Entity\\EntityTypeInterface');
$entity_type
->getKey('id')
->willReturn('nid');
$entity_type
->getKey('revision')
->willReturn('vid');
$this->storage
->getEntityType()
->willReturn($entity_type
->reveal());
// Enforce is new should be disabled.
$entity
->enforceIsNew(FALSE)
->shouldBeCalled();
// And toggle this as new revision but not the default revision.
$entity
->setNewRevision(TRUE)
->shouldBeCalled();
$entity
->isDefaultRevision(FALSE)
->shouldBeCalled();
// Assert we load the correct revision.
$this->storage
->load(1)
->shouldBeCalled()
->willReturn($entity
->reveal());
$row = new Row([
'nid' => 1,
'vid' => 2,
], [
'nid' => 1,
'vid' => 2,
]);
$row
->setDestinationProperty('nid', 1);
$this
->assertEquals($entity
->reveal(), $destination
->getEntity($row, []));
}
/**
* Test entity load failure.
*
* @covers ::getEntity
*/
public function testGetEntityLoadFailure() {
$destination = $this
->getEntityRevisionDestination([]);
$entity_type = $this
->prophesize('\\Drupal\\Core\\Entity\\EntityTypeInterface');
$entity_type
->getKey('id')
->willReturn('nid');
$entity_type
->getKey('revision')
->willReturn('vid');
$this->storage
->getEntityType()
->willReturn($entity_type
->reveal());
// Return a failed load and make sure we don't fail and we return FALSE.
$this->storage
->load(1)
->shouldBeCalled()
->willReturn(FALSE);
$row = new Row([
'nid' => 1,
'vid' => 2,
], [
'nid' => 1,
'vid' => 2,
]);
$row
->setDestinationProperty('nid', 1);
$this
->assertFalse($destination
->getEntity($row, []));
}
/**
* Test entity revision save.
*
* @covers ::save
*/
public function testSave() {
$entity = $this
->prophesize('\\Drupal\\Core\\Entity\\ContentEntityInterface');
$entity
->save()
->shouldBeCalled();
$entity
->getRevisionId()
->shouldBeCalled()
->willReturn(1234);
$destination = $this
->getEntityRevisionDestination();
$this
->assertEquals([
1234,
], $destination
->save($entity
->reveal(), []));
}
/**
* Helper method to create an entity revision destination with mock services.
*
* @see \Drupal\Tests\migrate\Unit\Destination\EntityRevision
*
* @param $configuration
* Configuration for the destination.
* @param string $plugin_id
* The plugin id.
* @param array $plugin_definition
* The plugin definition.
*
* @return \Drupal\Tests\migrate\Unit\destination\EntityRevision
* Mocked destination.
*/
protected function getEntityRevisionDestination(array $configuration = [], $plugin_id = 'entity_revision', array $plugin_definition = []) {
return new EntityRevision($configuration, $plugin_id, $plugin_definition, $this->migration
->reveal(), $this->storage
->reveal(), [], $this->entityManager
->reveal(), $this->fieldTypeManager
->reveal());
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
EntityRevisionTest:: |
protected | property | ||
EntityRevisionTest:: |
protected | property | ||
EntityRevisionTest:: |
protected | property | ||
EntityRevisionTest:: |
protected | property | ||
EntityRevisionTest:: |
protected | function | Helper method to create an entity revision destination with mock services. | |
EntityRevisionTest:: |
public | function |
Overrides UnitTestCase:: |
|
EntityRevisionTest:: |
public | function | Test that passed old destination values are used by default. | |
EntityRevisionTest:: |
public | function | Test entity load failure. | |
EntityRevisionTest:: |
public | function | Test that new revisions are flagged to be written as new. | |
EntityRevisionTest:: |
public | function | Test that revision updates update. | |
EntityRevisionTest:: |
public | function | Test entity revision save. | |
UnitTestCase:: |
protected | property | The random generator. | |
UnitTestCase:: |
protected | property | The app root. | |
UnitTestCase:: |
protected | function | Asserts if two arrays are equal by sorting them first. | |
UnitTestCase:: |
protected | function | Mocks a block with a block plugin. | |
UnitTestCase:: |
protected | function | Returns a stub class resolver. | |
UnitTestCase:: |
public | function | Returns a stub config factory that behaves according to the passed in array. | |
UnitTestCase:: |
public | function | Returns a stub config storage that returns the supplied configuration. | |
UnitTestCase:: |
protected | function | Sets up a container with a cache tags invalidator. | |
UnitTestCase:: |
protected | function | Gets the random generator for the utility methods. | |
UnitTestCase:: |
public | function | Returns a stub translation manager that just returns the passed string. | |
UnitTestCase:: |
public | function | Generates a unique random string containing letters and numbers. |