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;
8 use Drupal\migrate_plus\Entity\MigrationGroupInterface;
11 * Test migration groups.
15 class MigrationGroupTest extends KernelTestBase {
17 public static $modules = ['migrate', 'migrate_plus'];
20 * Test that group configuration is properly merged into specific migrations.
22 public function testConfigurationMerge() {
23 $group_id = 'test_group';
25 /** @var MigrationGroupInterface $migration_group */
26 $group_configuration = [
28 'shared_configuration' => [
29 'migration_tags' => ['Drupal 6'], // In migration, so will be overridden.
32 'type' => 'image', // Not in migration, so will be added.
33 'cardinality' => '1', // In migration, so will be overridden.
36 'destination' => ['plugin' => 'field_storage_config'], // Not in migration, so will be added.
39 $this->container->get('entity_type.manager')->getStorage('migration_group')
40 ->create($group_configuration)->save();
42 /** @var \Drupal\migrate_plus\Entity\MigrationInterface $migration */
43 $migration = $this->container->get('entity_type.manager')
44 ->getStorage('migration')->create([
45 'id' => 'specific_migration',
47 'migration_group' => $group_id,
48 'label' => 'Unaffected by the group',
49 'migration_tags' => ['Drupal 7'], // Overrides group.
53 'migration_dependencies' => [],
55 $migration->set('source', [
56 'plugin' => 'empty', // Not in group, persists.
58 'entity_type' => 'user', // Not in group, persists.
59 'cardinality' => '3', // Overrides group.
65 'migration_group' => $group_id,
66 'label' => 'Unaffected by the group',
67 'migration_tags' => ['Drupal 7'],
71 'entity_type' => 'user',
76 'destination' => ['plugin' => 'field_storage_config'],
78 /** @var \Drupal\migrate\Plugin\MigrationInterface $loaded_migration */
79 $loaded_migration = $this->container->get('plugin.manager.migration')
80 ->createInstance('specific_migration');
81 foreach ($expected_config as $key => $expected_value) {
82 $actual_value = $loaded_migration->get($key);
83 $this->assertEquals($expected_value, $actual_value);
88 * Test that deleting a group deletes its migrations.
90 public function testDelete() {
91 /** @var MigrationGroupInterface $migration_group */
92 $group_configuration = [
95 $migration_group = $this->container->get('entity_type.manager')
96 ->getStorage('migration_group')->create($group_configuration);
97 $migration_group->save();
99 /** @var \Drupal\migrate_plus\Entity\MigrationInterface $migration */
100 $migration = $this->container->get('entity_type.manager')
101 ->getStorage('migration')->create([
102 'id' => 'specific_migration',
103 'migration_group' => 'test_group',
104 'migration_tags' => [],
108 'migration_dependencies' => [],
112 /** @var \Drupal\migrate_plus\Entity\MigrationGroupInterface $loaded_migration_group */
113 $loaded_migration_group = MigrationGroup::load('test_group');
114 $loaded_migration_group->delete();
116 /** @var \Drupal\migrate_plus\Entity\MigrationInterface $loaded_migration */
117 $loaded_migration = Migration::load('specific_migration');
118 $this->assertNull($loaded_migration);