| Code Coverage | ||||||||||
| Classes and Traits | Functions and Methods | Lines | ||||||||
| Total |  | 0.00% | 0 / 1 |  | 0.00% | 0 / 3 | CRAP |  | 0.00% | 0 / 28 | 
| StubTestTrait |  | 0.00% | 0 / 1 |  | 0.00% | 0 / 3 | 42 |  | 0.00% | 0 / 28 | 
| performStubTest |  | 0.00% | 0 / 1 | 20 |  | 0.00% | 0 / 11 | |||
| createStub |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 13 | |||
| validateStub |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 4 | |||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\migrate_drupal\Tests\StubTestTrait. | |
| */ | |
| namespace Drupal\migrate_drupal\Tests; | |
| use Drupal\migrate\Entity\Migration; | |
| use Drupal\migrate\Row; | |
| /** | |
| * Provides common functionality for testing stubbing. | |
| */ | |
| trait StubTestTrait { | |
| /** | |
| * Test that creating a stub of the given entity type results in a valid | |
| * entity. | |
| * | |
| * @param string $entity_type_id | |
| * The entity type we are stubbing. | |
| */ | |
| protected function performStubTest($entity_type_id) { | |
| $entity_id = $this->createStub($entity_type_id); | |
| $this->assertTrue($entity_id, 'Stub successfully created'); | |
| if ($entity_id) { | |
| $violations = $this->validateStub($entity_type_id, $entity_id); | |
| if (!$this->assertIdentical(count($violations), 0, 'Stub is a valid entity')) { | |
| foreach ($violations as $violation) { | |
| $this->fail((string) $violation->getMessage()); | |
| } | |
| } | |
| } | |
| } | |
| /** | |
| * Create a stub of the given entity type. | |
| * | |
| * @param string $entity_type_id | |
| * The entity type we are stubbing. | |
| * | |
| * @return int | |
| * ID of the created entity. | |
| */ | |
| protected function createStub($entity_type_id) { | |
| // Create a dummy migration to pass to the destination plugin. | |
| $config = [ | |
| 'id' => 'dummy', | |
| 'migration_tags' => ['Stub test'], | |
| 'source' => ['plugin' => 'empty'], | |
| 'process' => [], | |
| 'destination' => ['plugin' => 'entity:' . $entity_type_id], | |
| ]; | |
| $migration = Migration::create($config); | |
| $destination_plugin = $migration->getDestinationPlugin(TRUE); | |
| $stub_row = new Row([], [], TRUE); | |
| $destination_ids = $destination_plugin->import($stub_row); | |
| return reset($destination_ids); | |
| } | |
| /** | |
| * Perform validation on a stub entity. | |
| * | |
| * @param string $entity_type_id | |
| * The entity type we are stubbing. | |
| * @param string $entity_id | |
| * ID of the stubbed entity to validate. | |
| * | |
| * @return \Drupal\Core\Entity\EntityConstraintViolationListInterface | |
| * List of constraint violations identified. | |
| */ | |
| protected function validateStub($entity_type_id, $entity_id) { | |
| $controller = \Drupal::entityManager()->getStorage($entity_type_id); | |
| /** @var \Drupal\Core\Entity\ContentEntityInterface $stub_entity */ | |
| $stub_entity = $controller->load($entity_id); | |
| return $stub_entity->validate(); | |
| } | |
| } |