annotate core/modules/migrate/tests/src/Kernel/MigrateBundleTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 7a779792577d
children
rev   line source
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 }