Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\migrate\Kernel;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\migrate\MigrateExecutable;
|
Chris@0
|
6 use Drupal\taxonomy\Entity\Term;
|
Chris@0
|
7 use Drupal\taxonomy\Entity\Vocabulary;
|
Chris@0
|
8
|
Chris@0
|
9 /**
|
Chris@0
|
10 * Tests setting of bundles on content entity migrations.
|
Chris@0
|
11 *
|
Chris@0
|
12 * @group migrate
|
Chris@0
|
13 */
|
Chris@0
|
14 class MigrateBundleTest extends MigrateTestBase {
|
Chris@0
|
15
|
Chris@0
|
16 /**
|
Chris@0
|
17 * Modules to enable.
|
Chris@0
|
18 *
|
Chris@0
|
19 * @var array
|
Chris@0
|
20 */
|
Chris@0
|
21 public static $modules = ['taxonomy', 'text', 'user'];
|
Chris@0
|
22
|
Chris@0
|
23 /**
|
Chris@0
|
24 * {@inheritdoc}
|
Chris@0
|
25 */
|
Chris@0
|
26 protected function setUp() {
|
Chris@0
|
27 parent::setUp();
|
Chris@0
|
28 $this->installEntitySchema('user');
|
Chris@0
|
29 $this->installEntitySchema('taxonomy_vocabulary');
|
Chris@0
|
30 $this->installEntitySchema('taxonomy_term');
|
Chris@0
|
31 $this->installConfig(['taxonomy']);
|
Chris@0
|
32 // Set up two vocabularies (taxonomy bundles).
|
Chris@0
|
33 Vocabulary::create(['vid' => 'tags', 'name' => 'Tags']);
|
Chris@0
|
34 Vocabulary::create(['vid' => 'categories', 'name' => 'Categories']);
|
Chris@0
|
35 }
|
Chris@0
|
36
|
Chris@0
|
37 /**
|
Chris@0
|
38 * Tests setting the bundle in the destination.
|
Chris@0
|
39 */
|
Chris@0
|
40 public function testDestinationBundle() {
|
Chris@0
|
41 $term_data_rows = [
|
Chris@0
|
42 ['id' => 1, 'name' => 'Category 1'],
|
Chris@0
|
43 ];
|
Chris@0
|
44 $ids = ['id' => ['type' => 'integer']];
|
Chris@0
|
45 $definition = [
|
Chris@0
|
46 'id' => 'terms',
|
Chris@0
|
47 'migration_tags' => ['Bundle test'],
|
Chris@0
|
48 'source' => [
|
Chris@0
|
49 'plugin' => 'embedded_data',
|
Chris@0
|
50 'data_rows' => $term_data_rows,
|
Chris@0
|
51 'ids' => $ids,
|
Chris@0
|
52 ],
|
Chris@0
|
53 'process' => [
|
Chris@0
|
54 'tid' => 'id',
|
Chris@0
|
55 'name' => 'name',
|
Chris@0
|
56 ],
|
Chris@0
|
57 'destination' => [
|
Chris@0
|
58 'plugin' => 'entity:taxonomy_term',
|
Chris@0
|
59 'default_bundle' => 'categories',
|
Chris@0
|
60 ],
|
Chris@0
|
61 'migration_dependencies' => [],
|
Chris@0
|
62 ];
|
Chris@0
|
63
|
Chris@0
|
64 $term_migration = \Drupal::service('plugin.manager.migration')->createStubMigration($definition);
|
Chris@0
|
65
|
Chris@0
|
66 // Import and validate the term entity was created with the correct bundle.
|
Chris@0
|
67 $term_executable = new MigrateExecutable($term_migration, $this);
|
Chris@0
|
68 $term_executable->import();
|
Chris@12
|
69 /** @var \Drupal\taxonomy\Entity\Term $term */
|
Chris@0
|
70 $term = Term::load(1);
|
Chris@0
|
71 $this->assertEquals($term->bundle(), 'categories');
|
Chris@0
|
72 }
|
Chris@0
|
73
|
Chris@0
|
74 /**
|
Chris@0
|
75 * Tests setting the bundle in the process pipeline.
|
Chris@0
|
76 */
|
Chris@0
|
77 public function testProcessBundle() {
|
Chris@0
|
78 $term_data_rows = [
|
Chris@0
|
79 ['id' => 1, 'vocab' => 'categories', 'name' => 'Category 1'],
|
Chris@0
|
80 ['id' => 2, 'vocab' => 'tags', 'name' => 'Tag 1'],
|
Chris@0
|
81 ];
|
Chris@0
|
82 $ids = ['id' => ['type' => 'integer']];
|
Chris@0
|
83 $definition = [
|
Chris@0
|
84 'id' => 'terms',
|
Chris@0
|
85 'migration_tags' => ['Bundle test'],
|
Chris@0
|
86 'source' => [
|
Chris@0
|
87 'plugin' => 'embedded_data',
|
Chris@0
|
88 'data_rows' => $term_data_rows,
|
Chris@0
|
89 'ids' => $ids,
|
Chris@0
|
90 ],
|
Chris@0
|
91 'process' => [
|
Chris@0
|
92 'tid' => 'id',
|
Chris@0
|
93 'vid' => 'vocab',
|
Chris@0
|
94 'name' => 'name',
|
Chris@0
|
95 ],
|
Chris@0
|
96 'destination' => [
|
Chris@0
|
97 'plugin' => 'entity:taxonomy_term',
|
Chris@0
|
98 ],
|
Chris@0
|
99 'migration_dependencies' => [],
|
Chris@0
|
100 ];
|
Chris@0
|
101
|
Chris@0
|
102 $term_migration = \Drupal::service('plugin.manager.migration')->createStubMigration($definition);
|
Chris@0
|
103
|
Chris@0
|
104 // Import and validate the term entities were created with the correct bundle.
|
Chris@0
|
105 $term_executable = new MigrateExecutable($term_migration, $this);
|
Chris@0
|
106 $term_executable->import();
|
Chris@12
|
107 /** @var \Drupal\taxonomy\Entity\Term $term */
|
Chris@0
|
108 $term = Term::load(1);
|
Chris@0
|
109 $this->assertEquals($term->bundle(), 'categories');
|
Chris@0
|
110 $term = Term::load(2);
|
Chris@0
|
111 $this->assertEquals($term->bundle(), 'tags');
|
Chris@0
|
112 }
|
Chris@0
|
113
|
Chris@0
|
114 /**
|
Chris@0
|
115 * Tests setting bundles both in process and destination.
|
Chris@0
|
116 */
|
Chris@0
|
117 public function testMixedBundles() {
|
Chris@0
|
118 $term_data_rows = [
|
Chris@0
|
119 ['id' => 1, 'vocab' => 'categories', 'name' => 'Category 1'],
|
Chris@0
|
120 ['id' => 2, 'name' => 'Tag 1'],
|
Chris@0
|
121 ];
|
Chris@0
|
122 $ids = ['id' => ['type' => 'integer']];
|
Chris@0
|
123 $definition = [
|
Chris@0
|
124 'id' => 'terms',
|
Chris@0
|
125 'migration_tags' => ['Bundle test'],
|
Chris@0
|
126 'source' => [
|
Chris@0
|
127 'plugin' => 'embedded_data',
|
Chris@0
|
128 'data_rows' => $term_data_rows,
|
Chris@0
|
129 'ids' => $ids,
|
Chris@0
|
130 ],
|
Chris@0
|
131 'process' => [
|
Chris@0
|
132 'tid' => 'id',
|
Chris@0
|
133 'vid' => 'vocab',
|
Chris@0
|
134 'name' => 'name',
|
Chris@0
|
135 ],
|
Chris@0
|
136 'destination' => [
|
Chris@0
|
137 'plugin' => 'entity:taxonomy_term',
|
Chris@0
|
138 // When no vocab is provided, the destination bundle is applied.
|
Chris@0
|
139 'default_bundle' => 'tags',
|
Chris@0
|
140 ],
|
Chris@0
|
141 'migration_dependencies' => [],
|
Chris@0
|
142 ];
|
Chris@0
|
143
|
Chris@0
|
144 $term_migration = \Drupal::service('plugin.manager.migration')->createStubMigration($definition);
|
Chris@0
|
145
|
Chris@0
|
146 // Import and validate the term entities were created with the correct bundle.
|
Chris@0
|
147 $term_executable = new MigrateExecutable($term_migration, $this);
|
Chris@0
|
148 $term_executable->import();
|
Chris@12
|
149 /** @var \Drupal\taxonomy\Entity\Term $term */
|
Chris@0
|
150 $term = Term::load(1);
|
Chris@0
|
151 $this->assertEquals($term->bundle(), 'categories');
|
Chris@0
|
152 $term = Term::load(2);
|
Chris@0
|
153 $this->assertEquals($term->bundle(), 'tags');
|
Chris@0
|
154 }
|
Chris@0
|
155
|
Chris@0
|
156 }
|