Chris@4: coreModuleListDataProvider()), [ Chris@4: 'migrate_plus', Chris@4: 'migrate_upgrade', Chris@4: ]); Chris@4: parent::setUp(); Chris@4: $this->installSchema('system', ['key_value', 'key_value_expire']); Chris@4: $this->installConfig(self::$modules); Chris@4: $this->installEntitySchema('migration_group'); Chris@4: $this->installEntitySchema('migration'); Chris@4: $this->migrationManager = \Drupal::service('plugin.manager.migration'); Chris@4: $this->state = $this->container->get('state'); Chris@4: $this->commands = new MigrateUpgradeCommands($this->state); Chris@4: } Chris@4: Chris@4: /** Chris@4: * Tests that all D6 migrations are generated as migrate plus entities. Chris@4: */ Chris@4: public function testD6Migrations() { Chris@4: $skipped_migrations = [ Chris@4: 'upgrade_d6_entity_reference_translation_comment__comment_forum', Chris@4: ]; Chris@4: $migrations = $this->drupal6Migrations(); Chris@4: $options = [ Chris@4: 'configure-only' => TRUE, Chris@4: 'legacy-db-key' => $this->sourceDatabase->getKey(), Chris@4: ]; Chris@4: $this->commands->upgrade($options); Chris@4: $migrate_plus_migrations = Migration::loadMultiple(); Chris@4: $this->assertMigrations($migrations, $migrate_plus_migrations, $skipped_migrations); Chris@4: $optional = array_flip($migrate_plus_migrations['upgrade_d6_url_alias']->toArray()['migration_dependencies']['optional']); Chris@4: $this->assertArrayHasKey('upgrade_d6_node_translation_page', $optional); Chris@4: } Chris@4: Chris@4: /** Chris@4: * Tests that all D7 migrations are generated as migrate plus entities. Chris@4: */ Chris@4: public function testD7Migrations() { Chris@4: $skipped_migrations = [ Chris@4: 'upgrade_d7_entity_reference_translation_comment__comment_forum', Chris@4: ]; Chris@4: $migrations = $this->drupal7Migrations(); Chris@4: $this->sourceDatabase->update('system') Chris@4: ->fields(['status' => 1]) Chris@4: ->condition('name', 'profile') Chris@4: ->execute(); Chris@4: $options = [ Chris@4: 'configure-only' => TRUE, Chris@4: 'legacy-db-key' => $this->sourceDatabase->getKey(), Chris@4: ]; Chris@4: $this->commands->upgrade($options); Chris@4: $migrate_plus_migrations = Migration::loadMultiple(); Chris@4: $this->assertMigrations($migrations, $migrate_plus_migrations, $skipped_migrations); Chris@4: $optional = array_flip($migrate_plus_migrations['upgrade_d7_url_alias']->toArray()['migration_dependencies']['optional']); Chris@4: $this->assertArrayHasKey('upgrade_d7_node_translation_page', $optional); Chris@4: } Chris@4: Chris@4: /** Chris@4: * Asserts that all migrations are exported as migrate plus entities. Chris@4: * Chris@4: * @param \Drupal\migrate\Plugin\MigrationInterface[] $migrations Chris@4: * The migrations. Chris@4: * @param \Drupal\migrate_plus\Entity\MigrationInterface[] $migrate_plus_migrations Chris@4: * The migrate plus config entities. Chris@4: * @param array $skipped_migrations Chris@4: * The migrations to skip. Chris@4: */ Chris@4: protected function assertMigrations(array $migrations, array $migrate_plus_migrations, array $skipped_migrations) { Chris@4: foreach ($migrations as $id => $migration) { Chris@4: $migration_id = 'upgrade_' . str_replace(':', '_', $migration->id()); Chris@4: if (in_array($migration_id, $skipped_migrations, TRUE)) { Chris@4: continue; Chris@4: } Chris@4: $this->assertArrayHasKey($migration_id, $migrate_plus_migrations); Chris@4: } Chris@4: } Chris@4: Chris@4: } Chris@4: Chris@4: } Chris@4: Chris@4: namespace { Chris@4: Chris@4: if (!function_exists('drush_print')) { Chris@4: Chris@4: /** Chris@4: * Stub for drush_print. Chris@4: * Chris@4: * @param string $message Chris@4: * The message to print. Chris@4: * @param int $indent Chris@4: * The indentation (space chars) Chris@4: * @param resource $handle Chris@4: * File handle to write to. NULL will write to standard output, STDERR Chris@4: * will write to the standard error. See Chris@4: * http://php.net/manual/en/features.commandline.io-streams.php. Chris@4: * @param bool $newline Chris@4: * Add a "\n" to the end of the output. Defaults to TRUE. Chris@4: */ Chris@4: function drush_print($message = '', $indent = 0, $handle = NULL, $newline = TRUE) { Chris@4: // Do nothing. Chris@4: } Chris@4: Chris@4: } Chris@4: Chris@4: if (!function_exists('dt')) { Chris@4: Chris@4: /** Chris@4: * Stub for dt(). Chris@4: * Chris@4: * @param string $message Chris@4: * The text. Chris@4: * @param array $replace Chris@4: * The replacement values. Chris@4: * Chris@4: * @return string Chris@4: * The text. Chris@4: */ Chris@4: function dt($message, array $replace = []) { Chris@4: return strtr($message, $replace); Chris@4: } Chris@4: Chris@4: } Chris@4: Chris@4: if (!function_exists('drush_op')) { Chris@4: Chris@4: /** Chris@4: * Stub for drush_op. Chris@4: * Chris@4: * @param callable $callable Chris@4: * The function to call. Chris@4: */ Chris@4: function drush_op(callable $callable) { Chris@4: $args = func_get_args(); Chris@4: array_shift($args); Chris@4: call_user_func_array($callable, $args); Chris@4: } Chris@4: Chris@4: } Chris@4: Chris@4: }