function MigrationStateUnitTest::testGetUpgradeStates

Same name and namespace in other branches
  1. 8.9.x core/modules/migrate_drupal/tests/src/Unit/MigrationStateUnitTest.php \Drupal\Tests\migrate_drupal\Unit\MigrationStateUnitTest::testGetUpgradeStates()
  2. 10 core/modules/migrate_drupal/tests/src/Unit/MigrationStateUnitTest.php \Drupal\Tests\migrate_drupal\Unit\MigrationStateUnitTest::testGetUpgradeStates()
  3. 11.x core/modules/migrate_drupal/tests/src/Unit/MigrationStateUnitTest.php \Drupal\Tests\migrate_drupal\Unit\MigrationStateUnitTest::testGetUpgradeStates()

Tests ::getUpgradeStates.

@dataProvider providerGetUpgradeStates

@covers ::getUpgradeStates
@covers ::buildDiscoveredDestinationsBySource
@covers ::buildDeclaredStateBySource
@covers ::buildUpgradeState
@covers ::getMigrationStates
@covers ::getSourceState
@covers ::getDestinationsForSource

File

core/modules/migrate_drupal/tests/src/Unit/MigrationStateUnitTest.php, line 39

Class

MigrationStateUnitTest
Defines a class for testing \Drupal\migrate_drupal\MigrationState.

Namespace

Drupal\Tests\migrate_drupal\Unit

Code

public function testGetUpgradeStates($modules_to_enable, $files, $field_plugins, $migrations, $source_system_data, $expected_7, $expected_6) {
  $fieldPluginManager = $this->prophesize(MigrateFieldPluginManagerInterface::class);
  $fieldPluginManager->getDefinitions()
    ->willReturn($field_plugins);
  $moduleHandler = $this->prophesize(ModuleHandlerInterface::class);
  $moduleHandler->getModuleList()
    ->willReturn($modules_to_enable);
  vfsStreamWrapper::register();
  $root = new vfsStreamDirectory('modules');
  vfsStreamWrapper::setRoot($root);
  $url = vfsStream::url('modules');
  foreach ($files as $module => $contents) {
    $path = $url . '/' . $module . '/migrations/state';
    mkdir($path, '0755', TRUE);
    file_put_contents($path . '/' . $module . '.migrate_drupal.yml', $contents);
  }
  $moduleHandler->getModuleDirectories()
    ->willReturn(array_combine(array_keys($files), array_map(function ($module) use ($url) {
    return $url . '/' . $module;
  }, array_keys($files))));
  $migrationState = new MigrationState($fieldPluginManager->reveal(), $moduleHandler->reveal(), $this->createMock(MessengerInterface::class), $this->getStringTranslationStub());
  $all_migrations = [];
  foreach ($migrations as $name => $values) {
    $migration = $this->prophesize(MigrationInterface::class);
    $source = $this->prophesize(MigrateSourceInterface::class);
    $destination = $this->prophesize(MigrateDestinationInterface::class);
    $source->getSourceModule()
      ->willReturn($values['source_module']);
    $destination->getDestinationModule()
      ->willReturn($values['destination_module']);
    $migration->getSourcePlugin()
      ->willReturn($source->reveal());
    $migration->getDestinationPlugin()
      ->willReturn($destination->reveal());
    $migration->getPluginId()
      ->willReturn($name);
    $migration->label()
      ->willReturn($name);
    $all_migrations[] = $migration->reveal();
  }
  // Tests Drupal 7 states.
  $states = $migrationState->getUpgradeStates(7, $source_system_data, $all_migrations);
  $this->assertEquals($expected_7, $states);
  $source_system_data['module']['content'] = [
    'name' => 'content',
    'status' => TRUE,
  ];
  // Tests Drupal 6 states.
  unset($source_system_data['module']['rdf'], $source_system_data['module']['filter']);
  $states = $migrationState->getUpgradeStates(6, $source_system_data, []);
  $this->assertEquals($expected_6, $states);
}

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