annotate modules/contrib/migrate_upgrade/tests/src/Kernel/DrushTest.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents a9cd425dd02b
children
rev   line source
Chris@4 1 <?php
Chris@4 2
Chris@4 3 namespace Drupal\Tests\migrate_upgrade\Kernel {
Chris@4 4
Chris@4 5 use Drupal\KernelTests\FileSystemModuleDiscoveryDataProviderTrait;
Chris@4 6 use Drupal\migrate_plus\Entity\Migration;
Chris@4 7 use Drupal\migrate_upgrade\Commands\MigrateUpgradeCommands;
Chris@4 8 use Drupal\Tests\migrate_drupal\Kernel\MigrateDrupalTestBase;
Chris@4 9 use Drupal\Tests\migrate_drupal\Traits\CreateMigrationsTrait;
Chris@4 10
Chris@4 11 /**
Chris@4 12 * Tests the drush command runner for migrate upgrade.
Chris@4 13 *
Chris@4 14 * @group migrate_upgrade
Chris@4 15 *
Chris@4 16 * @requires module migrate_plus
Chris@4 17 */
Chris@4 18 class DrushTest extends MigrateDrupalTestBase {
Chris@4 19
Chris@4 20 use FileSystemModuleDiscoveryDataProviderTrait;
Chris@4 21 use CreateMigrationsTrait;
Chris@4 22
Chris@4 23 /**
Chris@4 24 * The migration plugin manager.
Chris@4 25 *
Chris@4 26 * @var \Drupal\migrate\Plugin\MigrationPluginManager
Chris@4 27 */
Chris@4 28 protected $migrationManager;
Chris@4 29
Chris@4 30 /**
Chris@4 31 * The Migrate Upgrade Command drush service.
Chris@4 32 *
Chris@4 33 * @var \Drupal\migrate_upgrade\Commands\MigrateUpgradeCommands
Chris@4 34 */
Chris@4 35 protected $commands;
Chris@4 36
Chris@4 37 /**
Chris@4 38 * The state service.
Chris@4 39 *
Chris@4 40 * @var \Drupal\Core\State\StateInterface
Chris@4 41 */
Chris@4 42 protected $state;
Chris@4 43
Chris@4 44 /**
Chris@4 45 * {@inheritdoc}
Chris@4 46 */
Chris@4 47 protected function setUp() {
Chris@4 48 // Enable all modules.
Chris@4 49 self::$modules = array_merge(array_keys($this->coreModuleListDataProvider()), [
Chris@4 50 'migrate_plus',
Chris@4 51 'migrate_upgrade',
Chris@4 52 ]);
Chris@4 53 parent::setUp();
Chris@4 54 $this->installSchema('system', ['key_value', 'key_value_expire']);
Chris@4 55 $this->installConfig(self::$modules);
Chris@4 56 $this->installEntitySchema('migration_group');
Chris@4 57 $this->installEntitySchema('migration');
Chris@4 58 $this->migrationManager = \Drupal::service('plugin.manager.migration');
Chris@4 59 $this->state = $this->container->get('state');
Chris@4 60 $this->commands = new MigrateUpgradeCommands($this->state);
Chris@4 61 }
Chris@4 62
Chris@4 63 /**
Chris@4 64 * Tests that all D6 migrations are generated as migrate plus entities.
Chris@4 65 */
Chris@4 66 public function testD6Migrations() {
Chris@4 67 $skipped_migrations = [
Chris@4 68 'upgrade_d6_entity_reference_translation_comment__comment_forum',
Chris@4 69 ];
Chris@4 70 $migrations = $this->drupal6Migrations();
Chris@4 71 $options = [
Chris@4 72 'configure-only' => TRUE,
Chris@4 73 'legacy-db-key' => $this->sourceDatabase->getKey(),
Chris@4 74 ];
Chris@4 75 $this->commands->upgrade($options);
Chris@4 76 $migrate_plus_migrations = Migration::loadMultiple();
Chris@4 77 $this->assertMigrations($migrations, $migrate_plus_migrations, $skipped_migrations);
Chris@4 78 $optional = array_flip($migrate_plus_migrations['upgrade_d6_url_alias']->toArray()['migration_dependencies']['optional']);
Chris@4 79 $this->assertArrayHasKey('upgrade_d6_node_translation_page', $optional);
Chris@4 80 }
Chris@4 81
Chris@4 82 /**
Chris@4 83 * Tests that all D7 migrations are generated as migrate plus entities.
Chris@4 84 */
Chris@4 85 public function testD7Migrations() {
Chris@4 86 $skipped_migrations = [
Chris@4 87 'upgrade_d7_entity_reference_translation_comment__comment_forum',
Chris@4 88 ];
Chris@4 89 $migrations = $this->drupal7Migrations();
Chris@4 90 $this->sourceDatabase->update('system')
Chris@4 91 ->fields(['status' => 1])
Chris@4 92 ->condition('name', 'profile')
Chris@4 93 ->execute();
Chris@4 94 $options = [
Chris@4 95 'configure-only' => TRUE,
Chris@4 96 'legacy-db-key' => $this->sourceDatabase->getKey(),
Chris@4 97 ];
Chris@4 98 $this->commands->upgrade($options);
Chris@4 99 $migrate_plus_migrations = Migration::loadMultiple();
Chris@4 100 $this->assertMigrations($migrations, $migrate_plus_migrations, $skipped_migrations);
Chris@4 101 $optional = array_flip($migrate_plus_migrations['upgrade_d7_url_alias']->toArray()['migration_dependencies']['optional']);
Chris@4 102 $this->assertArrayHasKey('upgrade_d7_node_translation_page', $optional);
Chris@4 103 }
Chris@4 104
Chris@4 105 /**
Chris@4 106 * Asserts that all migrations are exported as migrate plus entities.
Chris@4 107 *
Chris@4 108 * @param \Drupal\migrate\Plugin\MigrationInterface[] $migrations
Chris@4 109 * The migrations.
Chris@4 110 * @param \Drupal\migrate_plus\Entity\MigrationInterface[] $migrate_plus_migrations
Chris@4 111 * The migrate plus config entities.
Chris@4 112 * @param array $skipped_migrations
Chris@4 113 * The migrations to skip.
Chris@4 114 */
Chris@4 115 protected function assertMigrations(array $migrations, array $migrate_plus_migrations, array $skipped_migrations) {
Chris@4 116 foreach ($migrations as $id => $migration) {
Chris@4 117 $migration_id = 'upgrade_' . str_replace(':', '_', $migration->id());
Chris@4 118 if (in_array($migration_id, $skipped_migrations, TRUE)) {
Chris@4 119 continue;
Chris@4 120 }
Chris@4 121 $this->assertArrayHasKey($migration_id, $migrate_plus_migrations);
Chris@4 122 }
Chris@4 123 }
Chris@4 124
Chris@4 125 }
Chris@4 126
Chris@4 127 }
Chris@4 128
Chris@4 129 namespace {
Chris@4 130
Chris@4 131 if (!function_exists('drush_print')) {
Chris@4 132
Chris@4 133 /**
Chris@4 134 * Stub for drush_print.
Chris@4 135 *
Chris@4 136 * @param string $message
Chris@4 137 * The message to print.
Chris@4 138 * @param int $indent
Chris@4 139 * The indentation (space chars)
Chris@4 140 * @param resource $handle
Chris@4 141 * File handle to write to. NULL will write to standard output, STDERR
Chris@4 142 * will write to the standard error. See
Chris@4 143 * http://php.net/manual/en/features.commandline.io-streams.php.
Chris@4 144 * @param bool $newline
Chris@4 145 * Add a "\n" to the end of the output. Defaults to TRUE.
Chris@4 146 */
Chris@4 147 function drush_print($message = '', $indent = 0, $handle = NULL, $newline = TRUE) {
Chris@4 148 // Do nothing.
Chris@4 149 }
Chris@4 150
Chris@4 151 }
Chris@4 152
Chris@4 153 if (!function_exists('dt')) {
Chris@4 154
Chris@4 155 /**
Chris@4 156 * Stub for dt().
Chris@4 157 *
Chris@4 158 * @param string $message
Chris@4 159 * The text.
Chris@4 160 * @param array $replace
Chris@4 161 * The replacement values.
Chris@4 162 *
Chris@4 163 * @return string
Chris@4 164 * The text.
Chris@4 165 */
Chris@4 166 function dt($message, array $replace = []) {
Chris@4 167 return strtr($message, $replace);
Chris@4 168 }
Chris@4 169
Chris@4 170 }
Chris@4 171
Chris@4 172 if (!function_exists('drush_op')) {
Chris@4 173
Chris@4 174 /**
Chris@4 175 * Stub for drush_op.
Chris@4 176 *
Chris@4 177 * @param callable $callable
Chris@4 178 * The function to call.
Chris@4 179 */
Chris@4 180 function drush_op(callable $callable) {
Chris@4 181 $args = func_get_args();
Chris@4 182 array_shift($args);
Chris@4 183 call_user_func_array($callable, $args);
Chris@4 184 }
Chris@4 185
Chris@4 186 }
Chris@4 187
Chris@4 188 }