class MigrationPluginManagerTest in Drupal 10
Same name in this branch
- 10 core/modules/migrate/tests/src/Unit/MigrationPluginManagerTest.php \Drupal\Tests\migrate\Unit\MigrationPluginManagerTest
- 10 core/modules/migrate/tests/src/Kernel/MigrationPluginManagerTest.php \Drupal\Tests\migrate\Kernel\MigrationPluginManagerTest
Same name and namespace in other branches
- 8 core/modules/migrate/tests/src/Unit/MigrationPluginManagerTest.php \Drupal\Tests\migrate\Unit\MigrationPluginManagerTest
- 9 core/modules/migrate/tests/src/Unit/MigrationPluginManagerTest.php \Drupal\Tests\migrate\Unit\MigrationPluginManagerTest
@coversDefaultClass \Drupal\migrate\Plugin\MigrationPluginManager @group migrate
Hierarchy
- class \Drupal\Tests\UnitTestCase extends \PHPUnit\Framework\TestCase uses \Drupal\Tests\PhpUnitCompatibilityTrait, \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait, PhpUnitWarnings
- class \Drupal\Tests\migrate\Unit\MigrationPluginManagerTest
Expanded class hierarchy of MigrationPluginManagerTest
File
- core/
modules/ migrate/ tests/ src/ Unit/ MigrationPluginManagerTest.php, line 13
Namespace
Drupal\Tests\migrate\UnitView source
class MigrationPluginManagerTest extends UnitTestCase {
/**
* A plugin manager.
*
* @var \Drupal\migrate\Plugin\MigrationPluginManager
*/
protected $pluginManager;
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
// Get a plugin manager for testing.
$module_handler = $this
->createMock('Drupal\\Core\\Extension\\ModuleHandlerInterface');
$cache_backend = $this
->createMock('Drupal\\Core\\Cache\\CacheBackendInterface');
$language_manager = $this
->createMock('Drupal\\Core\\Language\\LanguageManagerInterface');
$this->pluginManager = new MigrationPluginManager($module_handler, $cache_backend, $language_manager);
}
/**
* Tests building dependencies for multiple migrations.
*
* @dataProvider dependencyProvider
*/
public function testDependencyBuilding($migrations_data, $result_ids) {
$migrations = [];
foreach ($migrations_data as $migration_id => $migration_data) {
$migrations[$migration_id] = new TestMigrationMock($migration_id, $migration_data['dependencies']);
}
$ordered_migrations = $this->pluginManager
->buildDependencyMigration($migrations, []);
// Verify results.
$this
->assertEquals($result_ids, array_keys($ordered_migrations));
foreach ($migrations_data as $migration_id => $migration_data) {
$migration = $migrations[$migration_id];
$requirements = $migration_data['result_requirements'];
if (empty($requirements)) {
$this
->assertEquals([], $migration->set);
}
else {
$requirements = array_combine($requirements, $requirements);
$this
->assertCount(1, $migration->set);
[
$set_prop,
$set_requirements,
] = reset($migration->set);
$this
->assertEquals('requirements', $set_prop);
$this
->assertEquals($requirements, $set_requirements);
}
}
}
/**
* Provide dependency data for testing.
*/
public function dependencyProvider() {
return [
// Just one migration, with no dependencies.
[
[
'm1' => [
'dependencies' => [],
'result_requirements' => [],
],
],
[
'm1',
],
],
// Just one migration, with required dependencies.
[
[
'm1' => [
'dependencies' => [
'required' => [
'required1',
'required2',
],
],
'result_requirements' => [
'required1',
'required2',
],
],
],
[
'm1',
],
],
// Just one migration, with optional dependencies.
[
[
'm1' => [
'dependencies' => [
'optional' => [
'optional1',
],
],
'result_requirements' => [],
],
],
[
'm1',
],
],
// Multiple migrations.
[
[
'm1' => [
'dependencies' => [
'required' => [
'required1',
'required2',
],
],
'result_requirements' => [
'required1',
'required2',
],
],
'm2' => [
'dependencies' => [
'optional' => [
'optional1',
],
],
'result_requirements' => [],
],
],
[
'm1',
'm2',
],
],
// Multiple migrations, reordered due to optional requirement.
[
[
'm1' => [
'dependencies' => [
'optional' => [
'm2',
],
],
'result_requirements' => [],
],
'm2' => [
'dependencies' => [
'optional' => [
'optional1',
],
],
'result_requirements' => [],
],
],
[
'm2',
'm1',
],
],
// Ensure that optional requirements aren't turned into required ones,
// if the last migration has no optional deps.
[
[
'm1' => [
'dependencies' => [
'optional' => [
'm2',
],
],
'result_requirements' => [],
],
'm2' => [
'dependencies' => [],
'result_requirements' => [],
],
],
[
'm2',
'm1',
],
],
];
}
}