3 namespace Drupal\Tests\migrate_drupal\Kernel\dependencies;
5 use Drupal\Component\Render\FormattableMarkup;
6 use Drupal\migrate\MigrateExecutable;
7 use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
10 * Ensure the consistency among the dependencies for migrate.
12 * @group migrate_drupal
14 class MigrateDependenciesTest extends MigrateDrupal6TestBase {
19 public static $modules = ['aggregator', 'comment'];
22 * Tests that the order is correct when loading several migrations.
24 public function testMigrateDependenciesOrder() {
25 $migration_items = ['d6_comment', 'd6_filter_format', 'd6_node:page'];
26 $migrations = $this->container->get('plugin.manager.migration')->createInstances($migration_items);
27 $expected_order = ['d6_filter_format', 'd6_node:page', 'd6_comment'];
28 $this->assertIdentical(array_keys($migrations), $expected_order);
29 $expected_requirements = [
30 // d6_comment depends on d6_node:*, which the deriver expands into every
31 // variant of d6_node.
46 'd6_node:test_planet',
49 'd6_comment_entity_display',
50 'd6_comment_entity_form_display',
52 // Migration dependencies for comment include dependencies for node
54 $actual_requirements = $migrations['d6_comment']->get('requirements');
55 $this->assertIdentical(count($actual_requirements), count($expected_requirements));
56 foreach ($expected_requirements as $requirement) {
57 $this->assertIdentical($actual_requirements[$requirement], $requirement);
62 * Tests dependencies on the migration of aggregator feeds & items.
64 public function testAggregatorMigrateDependencies() {
65 /** @var \Drupal\migrate\Plugin\Migration $migration */
66 $migration = $this->getMigration('d6_aggregator_item');
67 $executable = new MigrateExecutable($migration, $this);
68 $this->startCollectingMessages();
69 $executable->import();
70 $this->assertEqual($this->migrateMessages['error'], [new FormattableMarkup('Migration @id did not meet the requirements. Missing migrations d6_aggregator_feed. requirements: d6_aggregator_feed.', ['@id' => $migration->id()])]);
71 $this->collectMessages = FALSE;