annotate modules/contrib/migrate_plus/src/Tests/MigrationGroupTest.php @ 0:c75dbcec494b

Initial commit from drush-created site
author Chris Cannam
date Thu, 05 Jul 2018 14:24:15 +0000
parents
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\migrate_plus\Tests;
Chris@0 4
Chris@0 5 use Drupal\KernelTests\KernelTestBase;
Chris@0 6 use Drupal\migrate_plus\Entity\Migration;
Chris@0 7 use Drupal\migrate_plus\Entity\MigrationGroup;
Chris@0 8 use Drupal\migrate_plus\Entity\MigrationGroupInterface;
Chris@0 9
Chris@0 10 /**
Chris@0 11 * Test migration groups.
Chris@0 12 *
Chris@0 13 * @group migrate_plus
Chris@0 14 */
Chris@0 15 class MigrationGroupTest extends KernelTestBase {
Chris@0 16
Chris@0 17 public static $modules = ['migrate', 'migrate_plus'];
Chris@0 18
Chris@0 19 /**
Chris@0 20 * Test that group configuration is properly merged into specific migrations.
Chris@0 21 */
Chris@0 22 public function testConfigurationMerge() {
Chris@0 23 $group_id = 'test_group';
Chris@0 24
Chris@0 25 /** @var MigrationGroupInterface $migration_group */
Chris@0 26 $group_configuration = [
Chris@0 27 'id' => $group_id,
Chris@0 28 'shared_configuration' => [
Chris@0 29 'migration_tags' => ['Drupal 6'], // In migration, so will be overridden.
Chris@0 30 'source' => [
Chris@0 31 'constants' => [
Chris@0 32 'type' => 'image', // Not in migration, so will be added.
Chris@0 33 'cardinality' => '1', // In migration, so will be overridden.
Chris@0 34 ],
Chris@0 35 ],
Chris@0 36 'destination' => ['plugin' => 'field_storage_config'], // Not in migration, so will be added.
Chris@0 37 ],
Chris@0 38 ];
Chris@0 39 $this->container->get('entity_type.manager')->getStorage('migration_group')
Chris@0 40 ->create($group_configuration)->save();
Chris@0 41
Chris@0 42 /** @var \Drupal\migrate_plus\Entity\MigrationInterface $migration */
Chris@0 43 $migration = $this->container->get('entity_type.manager')
Chris@0 44 ->getStorage('migration')->create([
Chris@0 45 'id' => 'specific_migration',
Chris@0 46 'load' => [],
Chris@0 47 'migration_group' => $group_id,
Chris@0 48 'label' => 'Unaffected by the group',
Chris@0 49 'migration_tags' => ['Drupal 7'], // Overrides group.
Chris@0 50 'destination' => [],
Chris@0 51 'source' => [],
Chris@0 52 'migration_dependencies' => [],
Chris@0 53 ]);
Chris@0 54 $migration->set('source', [
Chris@0 55 'plugin' => 'empty', // Not in group, persists.
Chris@0 56 'constants' => [
Chris@0 57 'entity_type' => 'user', // Not in group, persists.
Chris@0 58 'cardinality' => '3', // Overrides group.
Chris@0 59 ],
Chris@0 60 ]);
Chris@0 61 $migration->save();
Chris@0 62
Chris@0 63 $expected_config = [
Chris@0 64 'migration_group' => $group_id,
Chris@0 65 'label' => 'Unaffected by the group',
Chris@0 66 'migration_tags' => ['Drupal 7'],
Chris@0 67 'source' => [
Chris@0 68 'plugin' => 'empty',
Chris@0 69 'constants' => [
Chris@0 70 'entity_type' => 'user',
Chris@0 71 'type' => 'image',
Chris@0 72 'cardinality' => '3',
Chris@0 73 ],
Chris@0 74 ],
Chris@0 75 'destination' => ['plugin' => 'field_storage_config'],
Chris@0 76 ];
Chris@0 77 /** @var \Drupal\migrate\Plugin\MigrationInterface $loaded_migration */
Chris@0 78 $loaded_migration = $this->container->get('plugin.manager.config_entity_migration')
Chris@0 79 ->createInstance('specific_migration');
Chris@0 80 foreach ($expected_config as $key => $expected_value) {
Chris@0 81 $actual_value = $loaded_migration->get($key);
Chris@0 82 $this->assertEquals($expected_value, $actual_value);
Chris@0 83 }
Chris@0 84 }
Chris@0 85
Chris@0 86 /**
Chris@0 87 * Test that deleting a group deletes its migrations.
Chris@0 88 */
Chris@0 89 public function testDelete() {
Chris@0 90 /** @var MigrationGroupInterface $migration_group */
Chris@0 91 $group_configuration = [
Chris@0 92 'id' => 'test_group',
Chris@0 93 ];
Chris@0 94 $migration_group = $this->container->get('entity_type.manager')
Chris@0 95 ->getStorage('migration_group')->create($group_configuration);
Chris@0 96 $migration_group->save();
Chris@0 97
Chris@0 98 /** @var \Drupal\migrate_plus\Entity\MigrationInterface $migration */
Chris@0 99 $migration = $this->container->get('entity_type.manager')
Chris@0 100 ->getStorage('migration')->create([
Chris@0 101 'id' => 'specific_migration',
Chris@0 102 'migration_group' => 'test_group',
Chris@0 103 'migration_tags' => [],
Chris@0 104 'load' => [],
Chris@0 105 'destination' => [],
Chris@0 106 'source' => [],
Chris@0 107 'migration_dependencies' => [],
Chris@0 108 ]);
Chris@0 109 $migration->save();
Chris@0 110
Chris@0 111 /** @var \Drupal\migrate_plus\Entity\MigrationGroupInterface $loaded_migration_group */
Chris@0 112 $loaded_migration_group = MigrationGroup::load('test_group');
Chris@0 113 $loaded_migration_group->delete();
Chris@0 114
Chris@0 115 /** @var \Drupal\migrate_plus\Entity\MigrationInterface $loaded_migration */
Chris@0 116 $loaded_migration = Migration::load('specific_migration');
Chris@0 117 $this->assertNull($loaded_migration);
Chris@0 118 }
Chris@0 119
Chris@0 120 }