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 }
|