paragraphs-8.x-1.11/tests/src/Kernel/migrate/ParagraphsMigrationTestBase.php
tests/src/Kernel/migrate/ParagraphsMigrationTestBase.php
<?php namespace Drupal\Tests\paragraphs\Kernel\migrate; use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldStorageConfig; use Drupal\migrate\Plugin\MigrationInterface; use Drupal\paragraphs\Entity\ParagraphsType; use Drupal\Tests\migrate_drupal\Kernel\MigrateDrupalTestBase; /** * Base class for the paragraph migrations tests. */ abstract class ParagraphsMigrationTestBase extends MigrateDrupalTestBase { /** * {@inheritdoc} */ protected static $modules = [ 'entity_reference_revisions', 'migrate', 'migrate_drupal', 'paragraphs', ]; /** * {@inheritdoc} */ public function setUp(): void { parent::setUp(); $this->loadFixture(__DIR__ . '/../../../fixtures/drupal7.php'); } /** * Check to see if paragraph types were created. * * @param string $bundle_machine_name * The bundle to test for. * @param string $bundle_label * The bundle's label. */ protected function assertParagraphBundleExists($bundle_machine_name, $bundle_label) { $bundle = ParagraphsType::load($bundle_machine_name); $this->assertInstanceOf(ParagraphsType::class, $bundle); $this->assertEquals($bundle_label, $bundle->label()); } /** * Check if a field storage config entity was created for the paragraph. * * @param string $field_name * The field to test for. * @param string $field_type * The expected field type. */ protected function assertParagraphEntityFieldExists($field_name, $field_type) { $field_storage = FieldStorageConfig::loadByName('paragraph', $field_name); $this->assertNotNull($field_storage); $this->assertEquals($field_type, $field_storage->getType()); } /** * Check if a field storage entity was created for the paragraph fields. * * @param string $entity_type * The entity type to check on. * @param string $field_name * The field name to check for. */ protected function assertParagraphFieldExists($entity_type, $field_name) { $field_storage = FieldStorageConfig::loadByName($entity_type, $field_name); $this->assertNotNull($field_storage); $this->assertEquals('entity_reference_revisions', $field_storage->getType()); $this->assertEquals('paragraph', $field_storage->getSetting('target_type')); } /** * Test if the given field instance was created. */ protected function assertFieldInstanceExists($entity_type, $bundle, $field_name, $field_type = 'entity_reference_revisions') { $field = FieldConfig::loadByName($entity_type, $bundle, $field_name); $this->assertNotNull($field); $this->assertEquals($field_type, $field->getType()); } /** * Execute a migration's dependencies followed by the migration. * * @param string $plugin_id * The migration id to execute. */ protected function executeMigrationWithDependencies($plugin_id) { /** @var \Drupal\migrate\Plugin\MigrationPluginManagerInterface $manager */ $manager = $this->container->get('plugin.manager.migration'); $migrations = $manager->createInstances($plugin_id); foreach ($migrations as $migration) { $this->executeMigrationDependencies($migration); $this->executeMigration($migration); } } /** * Find and execute a migration's dependencies. * * @param \Drupal\migrate\Plugin\MigrationInterface $migration * The Migration from which to execute dependencies. */ protected function executeMigrationDependencies(MigrationInterface $migration) { $dependencies = $migration->getMigrationDependencies(); foreach ($dependencies['required'] as $dependency) { $plugin = $this->getMigration($dependency); if (!$plugin->allRowsProcessed()) { $this->executeMigrationDependencies($plugin); $this->executeMigration($plugin); } } foreach ($dependencies['optional'] as $dependency) { if ($plugin = $this->getMigration($dependency)) { if (!$plugin->allRowsProcessed()) { $this->executeMigrationDependencies($plugin); $this->executeMigration($plugin); } } } } /** * {@inheritdoc} */ protected function prepareMigration(MigrationInterface $migration) { // We want to run the revision migration without running all the node // migrations. if ($migration->id() == 'd7_node_revision:paragraphs_test') { $migration->set('migration_dependencies', [ 'required' => ['d7_node:paragraphs_test'], 'optional' => [], ]); $migration->set('requirements', ['d7_node:paragraphs_test' => 'd7_node:paragraphs_test']); } } }