You are here

public function MigrationTest::testRequirementsForMigrations in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/migrate/tests/src/Unit/MigrationTest.php \Drupal\Tests\migrate\Unit\MigrationTest::testRequirementsForMigrations()

Tests checking requirements for destination plugins.

@covers ::checkRequirements

@expectedException \Drupal\migrate\Exception\RequirementsException @expectedExceptionMessage Missing migrations test_a, test_c

File

core/modules/migrate/tests/src/Unit/MigrationTest.php, line 78
Contains \Drupal\Tests\migrate\Unit\MigrationTest.

Class

MigrationTest
@coversDefaultClass \Drupal\migrate\Entity\Migration @group Migration

Namespace

Drupal\Tests\migrate\Unit

Code

public function testRequirementsForMigrations() {
  $migration = new TestMigration();

  // Setup source and destination plugins without any requirements.
  $source_plugin = $this
    ->getMock('Drupal\\migrate\\Plugin\\MigrateSourceInterface');
  $destination_plugin = $this
    ->getMock('Drupal\\migrate\\Plugin\\MigrateDestinationInterface');
  $migration
    ->setSourcePlugin($source_plugin);
  $migration
    ->setDestinationPlugin($destination_plugin);
  $entity_manager = $this
    ->getMock('Drupal\\Core\\Entity\\EntityManagerInterface');
  $migration
    ->setEntityManager($entity_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
    ->getMock('Drupal\\migrate\\Entity\\MigrationInterface');
  $migration_c = $this
    ->getMock('Drupal\\migrate\\Entity\\MigrationInterface');
  $migration_d = $this
    ->getMock('Drupal\\migrate\\Entity\\MigrationInterface');
  $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);
  $migration_storage = $this
    ->getMock('Drupal\\Core\\Entity\\EntityStorageInterface');
  $migration_storage
    ->expects($this
    ->once())
    ->method('loadMultiple')
    ->with([
    'test_a',
    'test_b',
    'test_c',
    'test_d',
  ])
    ->willReturn([
    'test_b' => $migration_b,
    'test_c' => $migration_c,
    'test_d' => $migration_d,
  ]);
  $entity_manager
    ->expects($this
    ->once())
    ->method('getStorage')
    ->with('migration')
    ->willReturn($migration_storage);
  $migration
    ->checkRequirements();
}