Mercurial > hg > isophonics-drupal-site
view core/modules/migrate_drupal/src/Tests/StubTestTrait.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 4c8ae668cc8c |
children |
line wrap: on
line source
<?php namespace Drupal\migrate_drupal\Tests; 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. $definition = [ 'migration_tags' => ['Stub test'], 'source' => ['plugin' => 'empty'], 'process' => [], 'destination' => ['plugin' => 'entity:' . $entity_type_id], ]; $migration = \Drupal::service('plugin.manager.migration')->createStubMigration($definition); $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(); } }