class MigrationTest

Same name in this branch
  1. 8.9.x core/modules/migrate/tests/src/Unit/process/MigrationTest.php \Drupal\Tests\migrate\Unit\process\MigrationTest
  2. 8.9.x core/modules/migrate/tests/src/Kernel/MigrationTest.php \Drupal\Tests\migrate\Kernel\MigrationTest
  3. 8.9.x core/modules/migrate/tests/src/Kernel/Plugin/MigrationTest.php \Drupal\Tests\migrate\Kernel\Plugin\MigrationTest
Same name in other branches
  1. 9 core/modules/migrate/tests/src/Unit/MigrationTest.php \Drupal\Tests\migrate\Unit\MigrationTest
  2. 9 core/modules/migrate/tests/src/Kernel/MigrationTest.php \Drupal\Tests\migrate\Kernel\MigrationTest
  3. 9 core/modules/migrate/tests/src/Kernel/Plugin/MigrationTest.php \Drupal\Tests\migrate\Kernel\Plugin\MigrationTest
  4. 10 core/modules/migrate/tests/src/Unit/MigrationTest.php \Drupal\Tests\migrate\Unit\MigrationTest
  5. 10 core/modules/migrate/tests/src/Kernel/MigrationTest.php \Drupal\Tests\migrate\Kernel\MigrationTest
  6. 10 core/modules/migrate/tests/src/Kernel/Plugin/MigrationTest.php \Drupal\Tests\migrate\Kernel\Plugin\MigrationTest
  7. 11.x core/modules/migrate/tests/src/Unit/MigrationTest.php \Drupal\Tests\migrate\Unit\MigrationTest
  8. 11.x core/modules/migrate/tests/src/Kernel/MigrationTest.php \Drupal\Tests\migrate\Kernel\MigrationTest
  9. 11.x core/modules/migrate/tests/src/Kernel/Plugin/MigrationTest.php \Drupal\Tests\migrate\Kernel\Plugin\MigrationTest

@coversDefaultClass \Drupal\migrate\Plugin\Migration

@group migrate

Hierarchy

Expanded class hierarchy of MigrationTest

File

core/modules/migrate/tests/src/Unit/MigrationTest.php, line 25

Namespace

Drupal\Tests\migrate\Unit
View source
class MigrationTest extends UnitTestCase {
    
    /**
     * Tests checking requirements for source plugins.
     *
     * @covers ::checkRequirements
     */
    public function testRequirementsForSourcePlugin() {
        $migration = new TestMigration();
        $source_plugin = $this->createMock('Drupal\\Tests\\migrate\\Unit\\RequirementsAwareSourceInterface');
        $source_plugin->expects($this->once())
            ->method('checkRequirements')
            ->willThrowException(new RequirementsException('Missing source requirement', [
            'key' => 'value',
        ]));
        $destination_plugin = $this->createMock('Drupal\\Tests\\migrate\\Unit\\RequirementsAwareDestinationInterface');
        $migration->setSourcePlugin($source_plugin);
        $migration->setDestinationPlugin($destination_plugin);
        $this->expectException(RequirementsException::class);
        $this->expectExceptionMessage('Missing source requirement');
        $migration->checkRequirements();
    }
    
    /**
     * Tests checking requirements for destination plugins.
     *
     * @covers ::checkRequirements
     */
    public function testRequirementsForDestinationPlugin() {
        $migration = new TestMigration();
        $source_plugin = $this->createMock('Drupal\\migrate\\Plugin\\MigrateSourceInterface');
        $destination_plugin = $this->createMock('Drupal\\Tests\\migrate\\Unit\\RequirementsAwareDestinationInterface');
        $destination_plugin->expects($this->once())
            ->method('checkRequirements')
            ->willThrowException(new RequirementsException('Missing destination requirement', [
            'key' => 'value',
        ]));
        $migration->setSourcePlugin($source_plugin);
        $migration->setDestinationPlugin($destination_plugin);
        $this->expectException(RequirementsException::class);
        $this->expectExceptionMessage('Missing destination requirement');
        $migration->checkRequirements();
    }
    
    /**
     * Tests checking requirements for destination plugins.
     *
     * @covers ::checkRequirements
     */
    public function testRequirementsForMigrations() {
        $migration = new TestMigration();
        // Setup source and destination plugins without any requirements.
        $source_plugin = $this->createMock('Drupal\\migrate\\Plugin\\MigrateSourceInterface');
        $destination_plugin = $this->createMock('Drupal\\migrate\\Plugin\\MigrateDestinationInterface');
        $migration->setSourcePlugin($source_plugin);
        $migration->setDestinationPlugin($destination_plugin);
        $plugin_manager = $this->createMock('Drupal\\migrate\\Plugin\\MigrationPluginManagerInterface');
        $migration->setMigrationPluginManager($plugin_manager);
        // We setup the requirements that test_a doesn't exist and test_c is not
        // completed yet.
        $migration->setRequirements([
            'test_a',
            'test_b',
            'test_c',
            'test_d',
        ]);
        $migration_b = $this->createMock(MigrationInterface::class);
        $migration_c = $this->createMock(MigrationInterface::class);
        $migration_d = $this->createMock(MigrationInterface::class);
        $migration_b->expects($this->once())
            ->method('allRowsProcessed')
            ->willReturn(TRUE);
        $migration_c->expects($this->once())
            ->method('allRowsProcessed')
            ->willReturn(FALSE);
        $migration_d->expects($this->once())
            ->method('allRowsProcessed')
            ->willReturn(TRUE);
        $plugin_manager->expects($this->once())
            ->method('createInstances')
            ->with([
            'test_a',
            'test_b',
            'test_c',
            'test_d',
        ])
            ->willReturn([
            'test_b' => $migration_b,
            'test_c' => $migration_c,
            'test_d' => $migration_d,
        ]);
        $this->expectException(RequirementsException::class);
        $this->expectExceptionMessage('Missing migrations test_a, test_c');
        $migration->checkRequirements();
    }
    
    /**
     * Tests valid migration dependencies configuration returns expected values.
     *
     * @param array|null $source
     *   The migration dependencies configuration being tested.
     * @param array $expected_value
     *   The migration dependencies configuration array expected.
     *
     * @covers ::getMigrationDependencies
     * @dataProvider getValidMigrationDependenciesProvider
     *
     * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
     */
    public function testMigrationDependenciesWithValidConfig($source, array $expected_value) {
        $migration = new TestMigration();
        if (!is_null($source)) {
            $migration->set('migration_dependencies', $source);
        }
        $this->assertSame($migration->getMigrationDependencies(), $expected_value);
    }
    
    /**
     * Tests that getting migration dependencies fails with invalid configuration.
     *
     * @covers ::getMigrationDependencies
     */
    public function testMigrationDependenciesWithInvalidConfig() {
        $migration = new TestMigration();
        // Set the plugin ID to test the returned message.
        $plugin_id = 'test_migration';
        $migration->setPluginId($plugin_id);
        // Migration dependencies expects ['optional' => []] or ['required' => []]].
        $migration->set('migration_dependencies', [
            'test_migration_dependency',
        ]);
        $this->expectException(InvalidPluginDefinitionException::class);
        $this->expectExceptionMessage("Invalid migration dependencies configuration for migration {$plugin_id}");
        $migration->getMigrationDependencies();
    }
    
    /**
     * Provides data for valid migration configuration test.
     */
    public function getValidMigrationDependenciesProvider() {
        return [
            [
                'source' => NULL,
                'expected_value' => [
                    'required' => [],
                    'optional' => [],
                ],
            ],
            [
                'source' => [],
                'expected_value' => [
                    'required' => [],
                    'optional' => [],
                ],
            ],
            [
                'source' => [
                    'required' => [
                        'test_migration',
                    ],
                ],
                'expected_value' => [
                    'required' => [
                        'test_migration',
                    ],
                    'optional' => [],
                ],
            ],
            [
                'source' => [
                    'optional' => [
                        'test_migration',
                    ],
                ],
                'expected_value' => [
                    'optional' => [
                        'test_migration',
                    ],
                    'required' => [],
                ],
            ],
            [
                'source' => [
                    'required' => [
                        'req_test_migration',
                    ],
                    'optional' => [
                        'opt_test_migration',
                    ],
                ],
                'expected_value' => [
                    'required' => [
                        'req_test_migration',
                    ],
                    'optional' => [
                        'opt_test_migration',
                    ],
                ],
            ],
        ];
    }

}

Members

Title Sort descending Deprecated Modifiers Object type Summary Overrides
MigrationTest::getValidMigrationDependenciesProvider public function Provides data for valid migration configuration test.
MigrationTest::testMigrationDependenciesWithInvalidConfig public function Tests that getting migration dependencies fails with invalid configuration.
MigrationTest::testMigrationDependenciesWithValidConfig public function Tests valid migration dependencies configuration returns expected values.
MigrationTest::testRequirementsForDestinationPlugin public function Tests checking requirements for destination plugins.
MigrationTest::testRequirementsForMigrations public function Tests checking requirements for destination plugins.
MigrationTest::testRequirementsForSourcePlugin public function Tests checking requirements for source plugins.
PhpunitCompatibilityTrait::getMock Deprecated public function Returns a mock object for the specified class using the available method.
PhpunitCompatibilityTrait::setExpectedException Deprecated public function Compatibility layer for PHPUnit 6 to support PHPUnit 4 code.
UnitTestCase::$randomGenerator protected property The random generator.
UnitTestCase::$root protected property The app root. 1
UnitTestCase::assertArrayEquals protected function Asserts if two arrays are equal by sorting them first.
UnitTestCase::getBlockMockWithMachineName Deprecated protected function Mocks a block with a block plugin. 1
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::getConfigStorageStub public function Returns a stub config storage that returns the supplied configuration.
UnitTestCase::getContainerWithCacheTagsInvalidator protected function Sets up a container with a cache tags invalidator.
UnitTestCase::getRandomGenerator protected function Gets the random generator for the utility methods.
UnitTestCase::getStringTranslationStub public function Returns a stub translation manager that just returns the passed string.
UnitTestCase::randomMachineName public function Generates a unique random string containing letters and numbers.
UnitTestCase::setUp protected function 340

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.