Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 28
StubTestTrait
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
42
0.00% covered (danger)
0.00%
0 / 28
 performStubTest
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 11
 createStub
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 13
 validateStub
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
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();
  }
}