annotate modules/contrib/migrate_plus/tests/src/Kernel/MigrationConfigEntityTest.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_plus\Kernel;
Chris@4 4
Chris@4 5 use Drupal\Component\Plugin\Exception\PluginNotFoundException;
Chris@4 6 use Drupal\migrate\MigrateExecutable;
Chris@4 7 use Drupal\migrate_plus\Entity\Migration;
Chris@4 8 use Drupal\Tests\migrate\Kernel\MigrateTestBase;
Chris@4 9
Chris@4 10 /**
Chris@4 11 * Test migration config entity discovery.
Chris@4 12 *
Chris@4 13 * @group migrate_plus
Chris@4 14 */
Chris@4 15 class MigrationConfigEntityTest extends MigrateTestBase {
Chris@4 16
Chris@4 17 public static $modules = [
Chris@4 18 'migrate',
Chris@4 19 'migrate_plus',
Chris@4 20 'migrate_plus_test',
Chris@4 21 'taxonomy',
Chris@4 22 'text',
Chris@4 23 'system',
Chris@5 24 'user',
Chris@4 25 ];
Chris@4 26
Chris@4 27 /**
Chris@4 28 * The plugin manager.
Chris@4 29 *
Chris@4 30 * @var \Drupal\migrate\Plugin\MigrationPluginManager
Chris@4 31 */
Chris@4 32 protected $pluginManager;
Chris@4 33
Chris@4 34 /**
Chris@4 35 * {@inheritdoc}
Chris@4 36 */
Chris@4 37 protected function setUp() {
Chris@4 38 parent::setUp();
Chris@4 39 $this->pluginManager = \Drupal::service('plugin.manager.migration');
Chris@4 40 $this->installConfig('migrate_plus');
Chris@4 41 $this->installEntitySchema('taxonomy_term');
Chris@4 42 $this->installSchema('system', ['key_value', 'key_value_expire']);
Chris@4 43 }
Chris@4 44
Chris@4 45 /**
Chris@4 46 * Tests cache invalidation.
Chris@4 47 */
Chris@4 48 public function testCacheInvalidation() {
Chris@4 49 $config = Migration::create([
Chris@4 50 'id' => 'test',
Chris@4 51 'status' => TRUE,
Chris@4 52 'label' => 'Label A',
Chris@4 53 'migration_tags' => [],
Chris@4 54 'source' => [],
Chris@4 55 'destination' => [],
Chris@4 56 'migration_dependencies' => [],
Chris@4 57 ]);
Chris@4 58 $config->save();
Chris@4 59
Chris@4 60 $this->assertTrue($this->pluginManager->getDefinition('test'));
Chris@4 61 $this->assertSame('Label A', $this->pluginManager->getDefinition('test')['label']);
Chris@4 62
Chris@4 63 // Clear static cache in the plugin manager, the cache tag take care of the
Chris@4 64 // persistent cache.
Chris@4 65 $this->pluginManager->useCaches(FALSE);
Chris@4 66 $this->pluginManager->useCaches(TRUE);
Chris@4 67
Chris@4 68 $config->set('label', 'Label B');
Chris@4 69 $config->save();
Chris@4 70
Chris@4 71 $this->assertSame('Label B', $this->pluginManager->getDefinition('test')['label']);
Chris@4 72 }
Chris@4 73
Chris@4 74 /**
Chris@4 75 * Tests migration status.
Chris@4 76 */
Chris@4 77 public function testMigrationStatus() {
Chris@4 78 $configs = [
Chris@4 79 [
Chris@4 80 'id' => 'test_active',
Chris@4 81 'status' => TRUE,
Chris@4 82 'label' => 'Label Active',
Chris@4 83 'migration_tags' => [],
Chris@4 84 'source' => [],
Chris@4 85 'destination' => [],
Chris@4 86 'migration_dependencies' => [],
Chris@4 87 ],
Chris@4 88 [
Chris@4 89 'id' => 'test_inactive',
Chris@4 90 'status' => FALSE,
Chris@4 91 'label' => 'Label Inactive',
Chris@4 92 'migration_tags' => [],
Chris@4 93 'source' => [],
Chris@4 94 'destination' => [],
Chris@4 95 'migration_dependencies' => [],
Chris@4 96 ],
Chris@4 97 ];
Chris@4 98
Chris@4 99 foreach ($configs as $config) {
Chris@4 100 Migration::create($config)->save();
Chris@4 101 }
Chris@4 102
Chris@4 103 $definitions = $this->pluginManager->getDefinitions();
Chris@4 104 $this->assertCount(1, $definitions);
Chris@4 105 $this->assertArrayHasKey('test_active', $definitions);
Chris@4 106
Chris@4 107 $this->setExpectedException(PluginNotFoundException::class, 'The "test_inactive" plugin does not exist.');
Chris@4 108 $this->pluginManager->getDefinition('test_inactive');
Chris@4 109 }
Chris@4 110
Chris@4 111 /**
Chris@4 112 * Tests migration from configuration.
Chris@4 113 */
Chris@4 114 public function testImport() {
Chris@4 115 $this->installConfig('migrate_plus_test');
Chris@4 116 /** @var \Drupal\migrate\Plugin\MigrationInterface $migration */
Chris@4 117 $migration = $this->pluginManager->createInstance('fruit_terms');
Chris@4 118 $id_map = $migration->getIdMap();
Chris@4 119 $executable = new MigrateExecutable($migration, $this);
Chris@4 120 $executable->import();
Chris@4 121 $this->assertSame(3, $id_map->importedCount());
Chris@4 122 }
Chris@4 123
Chris@4 124 }