migrate_plus-8.x-5.x-dev/tests/src/Kernel/MigrationGroupTest.php

tests/src/Kernel/MigrationGroupTest.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\migrate_plus\Kernel;

use Drupal\KernelTests\KernelTestBase;
use Drupal\migrate_plus\Entity\Migration;
use Drupal\migrate_plus\Entity\MigrationGroup;

/**
 * Test migration groups.
 *
 * @group migrate_plus
 */
final class MigrationGroupTest extends KernelTestBase {

  /**
   * {@inheritdoc}
   */
  protected static $modules = ['migrate', 'migrate_plus', 'migrate_plus_test'];

  /**
   * Test that group configuration is properly merged into specific migrations.
   */
  public function testConfigurationMerge(): void {
    $group_id = 'test_group';

    /** @var \Drupal\migrate_plus\Entity\MigrationGroupInterface $migration_group */
    $group_configuration = [
      'id' => $group_id,
      'shared_configuration' => [
        // In migration, so will be overridden.
        'migration_tags' => ['Drupal 6'],
        'audit' => TRUE,
        'source' => [
          'constants' => [
            // Not in migration, so will be added.
            'type' => 'image',
            // In migration, so will be overridden.
            'cardinality' => '1',
          ],
        ],
        // Not in migration, so will be added.
        'destination' => ['plugin' => 'field_storage_config'],
      ],
    ];
    $this->container->get('entity_type.manager')->getStorage('migration_group')
      ->create($group_configuration)->save();

    /** @var \Drupal\migrate_plus\Entity\MigrationInterface $migration */
    $migration = $this->container->get('entity_type.manager')
      ->getStorage('migration')->create([
        'id' => 'specific_migration',
        'load' => [],
        'migration_group' => $group_id,
        'label' => 'Unaffected by the group',
        // Overrides group.
        'migration_tags' => ['Drupal 7'],
        'destination' => [],
        'source' => [],
        'process' => [],
        'migration_dependencies' => [],
      ]);
    $migration->set('source', [
      // Not in group, persists.
      'plugin' => 'empty',
      'constants' => [
        // Not in group, persists.
        'entity_type' => 'user',
        // Overrides group.
        'cardinality' => '3',
      ],
    ]);
    $migration->save();

    $expected_config = [
      'label' => 'Unaffected by the group',
      'getMigrationTags' => ['Drupal 7'],
      'isAuditable' => TRUE,
      'getSourceConfiguration' => [
        'plugin' => 'empty',
        'constants' => [
          'entity_type' => 'user',
          'type' => 'image',
          'cardinality' => '3',
        ],
      ],
      'getDestinationConfiguration' => ['plugin' => 'field_storage_config'],
    ];
    /** @var \Drupal\migrate_plus\Plugin\MigrationInterface $loaded_migration */
    $loaded_migration = $this->container->get('plugin.manager.migration')
      ->createInstance('specific_migration');
    foreach ($expected_config as $method => $expected_value) {
      $actual_value = $loaded_migration->$method();
      $this->assertEquals($expected_value, $actual_value);
    }
  }

  /**
   * Test that deleting a group deletes its migrations.
   */
  public function testDelete(): void {
    /** @var \Drupal\migrate_plus\Entity\MigrationGroupInterface $migration_group */
    $group_configuration = [
      'id' => 'test_group',
    ];
    $migration_group = $this->container->get('entity_type.manager')
      ->getStorage('migration_group')->create($group_configuration);
    $migration_group->save();

    /** @var \Drupal\migrate_plus\Entity\MigrationInterface $migration */
    $migration = $this->container->get('entity_type.manager')
      ->getStorage('migration')->create([
        'id' => 'specific_migration',
        'migration_group' => 'test_group',
        'migration_tags' => [],
        'load' => [],
        'destination' => [],
        'source' => [],
        'migration_dependencies' => [],
      ]);
    $migration->save();

    /** @var \Drupal\migrate_plus\Entity\MigrationGroupInterface $loaded_migration_group */
    $loaded_migration_group = MigrationGroup::load('test_group');
    $loaded_migration_group->delete();

    /** @var \Drupal\migrate_plus\Entity\MigrationInterface $loaded_migration */
    $loaded_migration = Migration::load('specific_migration');
    $this->assertNull($loaded_migration);
  }

  /**
   * Test that migrations without a group are assigned to the default group.
   */
  public function testDefaultGroup(): void {
    $this->installConfig('migrate_plus_test');

    /** @var \Drupal\migrate\Plugin\MigrationPluginManagerInterface $pluginManager */
    $pluginManager = \Drupal::service('plugin.manager.migration');
    $migration = $pluginManager->getDefinition('dummy');
    $this->assertEquals($migration['migration_group'], 'default', 'Migrations without an explicit group are assigned the default group.');
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc