migmag-1.0.x-dev/tests/src/Functional/MigMagCoreMigrationTestBase.php
tests/src/Functional/MigMagCoreMigrationTestBase.php
<?php namespace Drupal\Tests\migmag\Functional; use Drupal\Core\Extension\Extension; use Drupal\Core\Extension\ModuleInstallerInterface; use Drupal\Tests\migmag\Traits\MigMagExportTrait; use Drupal\Tests\migrate_drupal_ui\Functional\d7\Upgrade7Test; /** * Base class for Migrate Magician tests extending Upgrade7Tests. */ abstract class MigMagCoreMigrationTestBase extends Upgrade7Test { use MigMagExportTrait; /** * List of test methods to ignore. * * @const string[] */ const IGNORED_TEST_METHODS = [ 'testUpgradeAndIncremental' => "Core 9.2+ uses this 'testUpgradeAndIncremental' method for testing UI migration, while 9.1- uses 'testMigrateUpgradeExecute'. '%s' standardizes this by providing the 'executeDrupal7Migration' method.", 'testMigrateUpgradeExecute' => "Core 9.1- uses this 'testUpgradeAndIncremental' method for testing UI migration, while 9.2+ uses 'testUpgradeAndIncremental'. '%s' standardizes this by providing the 'executeDrupal7Migration' method.", ]; /** * {@inheritdoc} */ protected static $modules = [ 'migmag_language_content_settings_fix', ]; /** * {@inheritdoc} */ protected function createContentPostUpgrade() {} /** * {@inheritdoc} */ protected function assertEntityRevisionsCount(string $content_entity_type_id, int $expected_revision_count): void { // Skip this since we don't create content after upgrade. // See https://drupal.org/i/3052115. } /** * {@inheritdoc} */ protected function getEntityCountsIncremental() { return $this->getEntityCounts(); } /** * {@inheritdoc} */ protected function setUp(): void { $name = method_exists($this, 'name') ? $this->name() // @phpstan-ignore-next-line : $this->getName(); if (array_key_exists($name, static::IGNORED_TEST_METHODS)) { $message_template = static::IGNORED_TEST_METHODS[$name] ?? NULL; $this->markTestSkipped( $message_template ? sprintf( $message_template, __CLASS__ ) : '' ); } parent::setUp(); // We have 3 fewer errors than core, because of the workaround modules. $this->setNumberOfExpectedLoggedErrors(24); } /** * Executes Drupal 7 migration with Migrate Drupal UI. */ public function executeDrupal7Migration() { if (is_callable([parent::class, 'testMigrateUpgradeExecute'])) { parent::testMigrateUpgradeExecute(); } else { parent::testUpgradeAndIncremental(); } } /** * Installs every migmag module, excluding test modules. */ protected function enableAllMigmagModule() { $module_data = \Drupal::service('extension.list.module')->reset()->getList(); $migmag_root = dirname($module_data['migmag']->getPathname()); $migmag_modules = array_keys( array_filter( $module_data, function (Extension $extension) use ($migmag_root) { return strpos($extension->getPathname(), $migmag_root . DIRECTORY_SEPARATOR) === 0 && strpos($extension->getPathname(), DIRECTORY_SEPARATOR . 'tests' . DIRECTORY_SEPARATOR) === FALSE && $extension->getType() === 'module'; } ) ); $this->assertEquals( [ 'migmag', 'migmag_callback_upgrade', 'migmag_menu_link_migrate', 'migmag_process', 'migmag_process_lookup_replace', 'migmag_rollbackable', 'migmag_rollbackable_replace', ], $migmag_modules ); $module_installer = \Drupal::service('module_installer'); assert($module_installer instanceof ModuleInstallerInterface); $module_installer->install($migmag_modules); $this->resetAll(); } /** * Sets the value for ::expectedLoggedErrors if the property exists. * * @param int $number * The value for the property. */ protected function setNumberOfExpectedLoggedErrors(int $number): void { if (property_exists($this, 'expectedLoggedErrors')) { $this->expectedLoggedErrors = $number; } } }