3fa00568b5a3148630c1a9c28882d63a46b62ae5
[yaffs-website] / web / core / modules / migrate_drupal / tests / src / Kernel / dependencies / MigrateDependenciesTest.php
1 <?php
2
3 namespace Drupal\Tests\migrate_drupal\Kernel\dependencies;
4
5 use Drupal\Component\Render\FormattableMarkup;
6 use Drupal\migrate\MigrateExecutable;
7 use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
8
9 /**
10  * Ensure the consistency among the dependencies for migrate.
11  *
12  * @group migrate_drupal
13  */
14 class MigrateDependenciesTest extends MigrateDrupal6TestBase {
15
16   /**
17    * {@inheritdoc}
18    */
19   public static $modules = ['aggregator', 'comment'];
20
21   /**
22    * Tests that the order is correct when loading several migrations.
23    */
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.
32       'd6_node:article',
33       'd6_node:company',
34       'd6_node:employee',
35       'd6_node:event',
36       'd6_node:forum',
37       'd6_node:page',
38       'd6_user',
39       'd6_node_type',
40       'd6_node_settings',
41       'd6_filter_format',
42       'd6_node:sponsor',
43       'd6_node:story',
44       'd6_node:test_event',
45       'd6_node:test_page',
46       'd6_node:test_planet',
47       'd6_node:test_story',
48       'd6_comment_type',
49       'd6_comment_entity_display',
50       'd6_comment_entity_form_display',
51     ];
52     // Migration dependencies for comment include dependencies for node
53     // migration as well.
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);
58     }
59   }
60
61   /**
62    * Tests dependencies on the migration of aggregator feeds & items.
63    */
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;
72   }
73
74 }