function MigrationTest::testRequirementsForMigrations

Same name and namespace in other branches
  1. 9 core/modules/migrate/tests/src/Unit/MigrationTest.php \Drupal\Tests\migrate\Unit\MigrationTest::testRequirementsForMigrations()
  2. 8.9.x core/modules/migrate/tests/src/Unit/MigrationTest.php \Drupal\Tests\migrate\Unit\MigrationTest::testRequirementsForMigrations()
  3. 11.x core/modules/migrate/tests/src/Unit/MigrationTest.php \Drupal\Tests\migrate\Unit\MigrationTest::testRequirementsForMigrations()

Tests checking requirements for destination plugins.

@covers ::checkRequirements

File

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

Class

MigrationTest
@coversDefaultClass \Drupal\migrate\Plugin\Migration[[api-linebreak]]

Namespace

Drupal\Tests\migrate\Unit

Code

public function testRequirementsForMigrations() : void {
  $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();
}

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