class StateFileExistsTest in Drupal 10
Tests that core modules have a migrate_drupal.yml file as needed.
Checks that each module that requires a migrate_drupal.yml has the file. Because more that one migrate_drupal.yml file may have the same entry the ValidateMigrationStateTest, which validates the file contents, is not able to determine that all the required files exits.
@group migrate_drupal
Hierarchy
- class \Drupal\KernelTests\KernelTestBase extends \PHPUnit\Framework\TestCase implements ServiceProviderInterface uses \Drupal\Tests\PhpUnitCompatibilityTrait, \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait, AssertContentTrait, ConfigTestTrait, ExtensionListTestTrait, RandomGeneratorTrait, TestRequirementsTrait, PhpUnitWarnings
- class \Drupal\Tests\migrate\Kernel\MigrateTestBase implements MigrateMessageInterface
- class \Drupal\Tests\migrate_drupal\Kernel\MigrateDrupalTestBase
- class \Drupal\Tests\migrate_drupal\Kernel\StateFileExistsTest uses FileSystemModuleDiscoveryDataProviderTrait, MigrationConfigurationTrait
- class \Drupal\Tests\migrate_drupal\Kernel\MigrateDrupalTestBase
- class \Drupal\Tests\migrate\Kernel\MigrateTestBase implements MigrateMessageInterface
Expanded class hierarchy of StateFileExistsTest
File
- core/
modules/ migrate_drupal/ tests/ src/ Kernel/ StateFileExistsTest.php, line 19
Namespace
Drupal\Tests\migrate_drupal\KernelView source
class StateFileExistsTest extends MigrateDrupalTestBase {
use FileSystemModuleDiscoveryDataProviderTrait;
use MigrationConfigurationTrait;
/**
* {@inheritdoc}
*/
protected static $modules = [
// Test migrations states.
'migrate_state_finished_test',
'migrate_state_not_finished_test',
];
/**
* Modules that should have a migrate_drupal.yml file.
*
* @var array
*/
protected $stateFileRequired = [
'ban',
'block',
'block_content',
'book',
'comment',
'config_translation',
'contact',
'content_translation',
'datetime',
'dblog',
'field',
'file',
'filter',
'forum',
'image',
'language',
'link',
'locale',
'menu_link_content',
'migrate_state_finished_test',
'migrate_state_not_finished_test',
'menu_ui',
'migrate_drupal',
'node',
'options',
'path',
// @todo Remove RDF in https://www.drupal.org/node/3267515
'rdf',
'responsive_image',
'search',
'shortcut',
'statistics',
'syslog',
'system',
'taxonomy',
'telephone',
'text',
// @todo Remove tracker in https://www.drupal.org/project/drupal/issues/3261452
'tracker',
'update',
'user',
];
/**
* Tests that the migrate_drupal.yml files exist as needed.
*/
public function testMigrationState() {
// Install all available modules.
$module_handler = $this->container
->get('module_handler');
$all_modules = $this
->coreModuleListDataProvider();
$modules_enabled = $module_handler
->getModuleList();
$modules_to_enable = array_keys(array_diff_key($all_modules, $modules_enabled));
$this
->enableModules($modules_to_enable);
// Modules with a migrate_drupal.yml file.
$has_state_file = (new YamlDiscovery('migrate_drupal', array_map(function ($value) {
return $value . '/migrations/state';
}, $module_handler
->getModuleDirectories())))
->findAll();
foreach ($this->stateFileRequired as $module) {
$this
->assertArrayHasKey($module, $has_state_file, sprintf("Module '%s' should have a migrate_drupal.yml file", $module));
}
$this
->assertSameSize($this->stateFileRequired, $has_state_file);
}
}