Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / migrate / tests / src / Kernel / Plugin / MigrationProvidersExistTest.php
1 <?php
2
3 namespace Drupal\Tests\migrate\Kernel\Plugin;
4
5 use Drupal\Component\Render\FormattableMarkup;
6 use Drupal\KernelTests\FileSystemModuleDiscoveryDataProviderTrait;
7 use Drupal\Tests\migrate_drupal\Kernel\MigrateDrupalTestBase;
8
9 /**
10  * Tests that modules exist for all source and destination plugins.
11  *
12  * @group migrate_drupal_ui
13  */
14 class MigrationProvidersExistTest extends MigrateDrupalTestBase {
15
16   use FileSystemModuleDiscoveryDataProviderTrait;
17
18   /**
19    * {@inheritdoc}
20    */
21   public static $modules = ['migration_provider_test'];
22
23   /**
24    * Tests that modules exist for all source and destination plugins.
25    */
26   public function testProvidersExist() {
27     // Install all available modules.
28     $module_handler = $this->container->get('module_handler');
29     $modules = $this->coreModuleListDataProvider();
30     $modules_enabled = $module_handler->getModuleList();
31     $modules_to_enable = array_keys(array_diff_key($modules, $modules_enabled));
32     $this->enableModules($modules_to_enable);
33
34     /** @var \Drupal\migrate\Plugin\MigrationPluginManager $plugin_manager */
35     $plugin_manager = $this->container->get('plugin.manager.migration');
36     // Get all the migrations
37     $migrations = $plugin_manager->createInstances(array_keys($plugin_manager->getDefinitions()));
38     // Ensure the test module was enabled.
39     $this->assertTrue(array_key_exists('migration_provider_test', $migrations));
40     $this->assertTrue(array_key_exists('migration_provider_no_annotation', $migrations));
41     /** @var \Drupal\migrate\Plugin\Migration $migration */
42     foreach ($migrations as $migration) {
43       $source_module = $migration->getSourcePlugin()->getSourceModule();
44       $destination_module = $migration->getDestinationPlugin()->getDestinationModule();
45       $migration_id = $migration->getPluginId();
46       if ($migration_id == 'migration_provider_test') {
47         $this->assertFalse($source_module, new FormattableMarkup('Source module not found for @migration_id.', ['@migration_id' => $migration_id]));
48         $this->assertFalse($destination_module, new FormattableMarkup('Destination module not found for @migration_id.', ['@migration_id' => $migration_id]));
49       }
50       elseif ($migration_id == 'migration_provider_no_annotation') {
51         $this->assertFalse($source_module, new FormattableMarkup('Source module not found for @migration_id.', ['@migration_id' => $migration_id]));
52         $this->assertTrue($destination_module, new FormattableMarkup('Destination module found for @migration_id.', ['@migration_id' => $migration_id]));
53       }
54       else {
55         $this->assertTrue($source_module, new FormattableMarkup('Source module found for @migration_id.', ['@migration_id' => $migration_id]));
56         $this->assertTrue($destination_module, new FormattableMarkup('Destination module found for @migration_id.', ['@migration_id' => $migration_id]));
57       }
58       // Destination module can't be migrate or migrate_drupal or migrate_drupal_ui
59       $invalid_destinations = ['migrate', 'migrate_drupal', 'migrate_drupal_ui'];
60       $this->assertNotContains($destination_module, $invalid_destinations, new FormattableMarkup('Invalid destination for @migration_id.', ['@migration_id' => $migration_id]));
61     }
62   }
63
64 }