class MigrationPluginManagerTest
Tests Drupal\migrate\Plugin\MigrationPluginManager.
Attributes
#[CoversClass(MigrationPluginManager::class)]
#[Group('migrate')]
Hierarchy
- class \Drupal\Tests\UnitTestCase uses \Drupal\Tests\PhpUnitCompatibilityTrait, \Prophecy\PhpUnit\ProphecyTrait, \Drupal\TestTools\Extension\DeprecationBridge\ExpectDeprecationTrait, \Drupal\Tests\RandomGeneratorTrait extends \PHPUnit\Framework\TestCase
- class \Drupal\Tests\migrate\Unit\MigrationPluginManagerTest extends \Drupal\Tests\UnitTestCase
Expanded class hierarchy of MigrationPluginManagerTest
File
-
core/
modules/ migrate/ tests/ src/ Unit/ MigrationPluginManagerTest.php, line 18
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.
*/
public function testDependencyBuilding($migrations_data, $result_ids) : void {
$migrations = [];
foreach ($migrations_data as $migration_id => $migration_data) {
$migrations[$migration_id] = new TestMigrationMock($migration_id, $migration_data['migration_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);
}
}
}
/**
* Tests that expandPluginIds returns all derivatives.
*/
public function testExpandPluginIds() : void {
$backend = $this->prophesize(CacheBackendInterface::class);
$cache = new \stdClass();
$cache->data = [
'a:a' => [
'provider' => 'core',
],
'a:b' => [
'provider' => 'core',
],
'b' => [
'provider' => 'core',
],
];
$backend->get('migration_plugins')
->willReturn($cache);
$this->pluginManager
->setCacheBackend($backend->reveal(), 'migration_plugins');
$plugin_ids = $this->pluginManager
->expandPluginIds([
'b',
'a',
]);
$this->assertContains('a:a', $plugin_ids);
$this->assertContains('a:b', $plugin_ids);
$this->assertContains('b', $plugin_ids);
}
/**
* Provide dependency data for testing.
*/
public static function dependencyProvider() {
return [
// Just one migration, with no dependencies.
[
[
'm1' => [
'migration_dependencies' => [],
'result_requirements' => [],
],
],
[
'm1',
],
],
// Just one migration, with required dependencies.
[
[
'm1' => [
'migration_dependencies' => [
'required' => [
'required1',
'required2',
],
],
'result_requirements' => [
'required1',
'required2',
],
],
],
[
'm1',
],
],
// Just one migration, with optional dependencies.
[
[
'm1' => [
'migration_dependencies' => [
'optional' => [
'optional1',
],
],
'result_requirements' => [],
],
],
[
'm1',
],
],
// Multiple migrations.
[
[
'm1' => [
'migration_dependencies' => [
'required' => [
'required1',
'required2',
],
],
'result_requirements' => [
'required1',
'required2',
],
],
'm2' => [
'migration_dependencies' => [
'optional' => [
'optional1',
],
],
'result_requirements' => [],
],
],
[
'm1',
'm2',
],
],
// Multiple migrations, reordered due to optional requirement.
[
[
'm1' => [
'migration_dependencies' => [
'optional' => [
'm2',
],
],
'result_requirements' => [],
],
'm2' => [
'migration_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' => [
'migration_dependencies' => [
'optional' => [
'm2',
],
],
'result_requirements' => [],
],
'm2' => [
'migration_dependencies' => [],
'result_requirements' => [],
],
],
[
'm2',
'm1',
],
],
];
}
}
Members
| Title Sort descending | Modifiers | Object type | Summary | Overriden Title |
|---|---|---|---|---|
| ExpectDeprecationTrait::expectDeprecation | public | function | Adds an expected deprecation. | |
| ExpectDeprecationTrait::setUpErrorHandler | public | function | Sets up the test error handler. | |
| ExpectDeprecationTrait::tearDownErrorHandler | public | function | Tears down the test error handler. | |
| MigrationPluginManagerTest::$pluginManager | protected | property | A plugin manager. | |
| MigrationPluginManagerTest::dependencyProvider | public static | function | Provide dependency data for testing. | |
| MigrationPluginManagerTest::setUp | protected | function | Overrides UnitTestCase::setUp | |
| MigrationPluginManagerTest::testDependencyBuilding | public | function | Tests building dependencies for multiple migrations. | |
| MigrationPluginManagerTest::testExpandPluginIds | public | function | Tests that expandPluginIds returns all derivatives. | |
| RandomGeneratorTrait::getRandomGenerator | protected | function | Gets the random generator for the utility methods. | |
| RandomGeneratorTrait::randomMachineName | protected | function | Generates a unique random string containing letters and numbers. | |
| RandomGeneratorTrait::randomObject | public | function | Generates a random PHP object. | |
| RandomGeneratorTrait::randomString | public | function | Generates a pseudo-random string of ASCII characters of codes 32 to 126. | |
| UnitTestCase::$root | protected | property | The app root. | |
| UnitTestCase::getClassResolverStub | protected | function | Returns a stub class resolver. | |
| UnitTestCase::getConfigFactoryStub | public | function | Returns a stub config factory that behaves according to the passed array. | |
| UnitTestCase::getContainerWithCacheTagsInvalidator | protected | function | Sets up a container with a cache tags invalidator. | |
| UnitTestCase::getStringTranslationStub | public | function | Returns a stub translation manager that just returns the passed string. | |
| UnitTestCase::setDebugDumpHandler | public static | function | Registers the dumper CLI handler when the DebugDump extension is enabled. | |
| UnitTestCase::setupMockIterator | protected | function | Set up a traversable class mock to return specific items when iterated. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.