3 namespace Drupal\Tests\migrate_plus\Kernel;
5 use Drupal\KernelTests\KernelTestBase;
6 use Drupal\migrate_plus\Entity\Migration;
7 use Drupal\migrate_plus\Entity\MigrationGroup;
10 * Test migration groups.
14 class MigrationGroupTest extends KernelTestBase {
16 public static $modules = ['migrate', 'migrate_plus'];
19 * Test that group configuration is properly merged into specific migrations.
21 public function testConfigurationMerge() {
22 $group_id = 'test_group';
24 /** @var \Drupal\migrate_plus\Entity\MigrationGroupInterface $migration_group */
25 $group_configuration = [
27 'shared_configuration' => [
28 // In migration, so will be overridden.
29 'migration_tags' => ['Drupal 6'],
32 // Not in migration, so will be added.
34 // In migration, so will be overridden.
38 // Not in migration, so will be added.
39 'destination' => ['plugin' => 'field_storage_config'],
42 $this->container->get('entity_type.manager')->getStorage('migration_group')
43 ->create($group_configuration)->save();
45 /** @var \Drupal\migrate_plus\Entity\MigrationInterface $migration */
46 $migration = $this->container->get('entity_type.manager')
47 ->getStorage('migration')->create([
48 'id' => 'specific_migration',
50 'migration_group' => $group_id,
51 'label' => 'Unaffected by the group',
53 'migration_tags' => ['Drupal 7'],
57 'migration_dependencies' => [],
59 $migration->set('source', [
60 // Not in group, persists.
63 // Not in group, persists.
64 'entity_type' => 'user',
72 'migration_group' => $group_id,
73 'label' => 'Unaffected by the group',
74 'migration_tags' => ['Drupal 7'],
78 'entity_type' => 'user',
83 'destination' => ['plugin' => 'field_storage_config'],
85 /** @var \Drupal\migrate\Plugin\MigrationInterface $loaded_migration */
86 $loaded_migration = $this->container->get('plugin.manager.migration')
87 ->createInstance('specific_migration');
88 foreach ($expected_config as $key => $expected_value) {
89 $actual_value = $loaded_migration->get($key);
90 $this->assertEquals($expected_value, $actual_value);
95 * Test that deleting a group deletes its migrations.
97 public function testDelete() {
98 /** @var \Drupal\migrate_plus\Entity\MigrationGroupInterface $migration_group */
99 $group_configuration = [
100 'id' => 'test_group',
102 $migration_group = $this->container->get('entity_type.manager')
103 ->getStorage('migration_group')->create($group_configuration);
104 $migration_group->save();
106 /** @var \Drupal\migrate_plus\Entity\MigrationInterface $migration */
107 $migration = $this->container->get('entity_type.manager')
108 ->getStorage('migration')->create([
109 'id' => 'specific_migration',
110 'migration_group' => 'test_group',
111 'migration_tags' => [],
115 'migration_dependencies' => [],
119 /** @var \Drupal\migrate_plus\Entity\MigrationGroupInterface $loaded_migration_group */
120 $loaded_migration_group = MigrationGroup::load('test_group');
121 $loaded_migration_group->delete();
123 /** @var \Drupal\migrate_plus\Entity\MigrationInterface $loaded_migration */
124 $loaded_migration = Migration::load('specific_migration');
125 $this->assertNull($loaded_migration);