Chris@0: installEntitySchema('user'); Chris@0: $this->installEntitySchema('taxonomy_vocabulary'); Chris@0: $this->installEntitySchema('taxonomy_term'); Chris@0: $this->installConfig(['taxonomy']); Chris@0: // Set up two vocabularies (taxonomy bundles). Chris@0: Vocabulary::create(['vid' => 'tags', 'name' => 'Tags']); Chris@0: Vocabulary::create(['vid' => 'categories', 'name' => 'Categories']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests setting the bundle in the destination. Chris@0: */ Chris@0: public function testDestinationBundle() { Chris@0: $term_data_rows = [ Chris@0: ['id' => 1, 'name' => 'Category 1'], Chris@0: ]; Chris@0: $ids = ['id' => ['type' => 'integer']]; Chris@0: $definition = [ Chris@0: 'id' => 'terms', Chris@0: 'migration_tags' => ['Bundle test'], Chris@0: 'source' => [ Chris@0: 'plugin' => 'embedded_data', Chris@0: 'data_rows' => $term_data_rows, Chris@0: 'ids' => $ids, Chris@0: ], Chris@0: 'process' => [ Chris@0: 'tid' => 'id', Chris@0: 'name' => 'name', Chris@0: ], Chris@0: 'destination' => [ Chris@0: 'plugin' => 'entity:taxonomy_term', Chris@0: 'default_bundle' => 'categories', Chris@0: ], Chris@0: 'migration_dependencies' => [], Chris@0: ]; Chris@0: Chris@0: $term_migration = \Drupal::service('plugin.manager.migration')->createStubMigration($definition); Chris@0: Chris@0: // Import and validate the term entity was created with the correct bundle. Chris@0: $term_executable = new MigrateExecutable($term_migration, $this); Chris@0: $term_executable->import(); Chris@12: /** @var \Drupal\taxonomy\Entity\Term $term */ Chris@0: $term = Term::load(1); Chris@0: $this->assertEquals($term->bundle(), 'categories'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests setting the bundle in the process pipeline. Chris@0: */ Chris@0: public function testProcessBundle() { Chris@0: $term_data_rows = [ Chris@0: ['id' => 1, 'vocab' => 'categories', 'name' => 'Category 1'], Chris@0: ['id' => 2, 'vocab' => 'tags', 'name' => 'Tag 1'], Chris@0: ]; Chris@0: $ids = ['id' => ['type' => 'integer']]; Chris@0: $definition = [ Chris@0: 'id' => 'terms', Chris@0: 'migration_tags' => ['Bundle test'], Chris@0: 'source' => [ Chris@0: 'plugin' => 'embedded_data', Chris@0: 'data_rows' => $term_data_rows, Chris@0: 'ids' => $ids, Chris@0: ], Chris@0: 'process' => [ Chris@0: 'tid' => 'id', Chris@0: 'vid' => 'vocab', Chris@0: 'name' => 'name', Chris@0: ], Chris@0: 'destination' => [ Chris@0: 'plugin' => 'entity:taxonomy_term', Chris@0: ], Chris@0: 'migration_dependencies' => [], Chris@0: ]; Chris@0: Chris@0: $term_migration = \Drupal::service('plugin.manager.migration')->createStubMigration($definition); Chris@0: Chris@0: // Import and validate the term entities were created with the correct bundle. Chris@0: $term_executable = new MigrateExecutable($term_migration, $this); Chris@0: $term_executable->import(); Chris@12: /** @var \Drupal\taxonomy\Entity\Term $term */ Chris@0: $term = Term::load(1); Chris@0: $this->assertEquals($term->bundle(), 'categories'); Chris@0: $term = Term::load(2); Chris@0: $this->assertEquals($term->bundle(), 'tags'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests setting bundles both in process and destination. Chris@0: */ Chris@0: public function testMixedBundles() { Chris@0: $term_data_rows = [ Chris@0: ['id' => 1, 'vocab' => 'categories', 'name' => 'Category 1'], Chris@0: ['id' => 2, 'name' => 'Tag 1'], Chris@0: ]; Chris@0: $ids = ['id' => ['type' => 'integer']]; Chris@0: $definition = [ Chris@0: 'id' => 'terms', Chris@0: 'migration_tags' => ['Bundle test'], Chris@0: 'source' => [ Chris@0: 'plugin' => 'embedded_data', Chris@0: 'data_rows' => $term_data_rows, Chris@0: 'ids' => $ids, Chris@0: ], Chris@0: 'process' => [ Chris@0: 'tid' => 'id', Chris@0: 'vid' => 'vocab', Chris@0: 'name' => 'name', Chris@0: ], Chris@0: 'destination' => [ Chris@0: 'plugin' => 'entity:taxonomy_term', Chris@0: // When no vocab is provided, the destination bundle is applied. Chris@0: 'default_bundle' => 'tags', Chris@0: ], Chris@0: 'migration_dependencies' => [], Chris@0: ]; Chris@0: Chris@0: $term_migration = \Drupal::service('plugin.manager.migration')->createStubMigration($definition); Chris@0: Chris@0: // Import and validate the term entities were created with the correct bundle. Chris@0: $term_executable = new MigrateExecutable($term_migration, $this); Chris@0: $term_executable->import(); Chris@12: /** @var \Drupal\taxonomy\Entity\Term $term */ Chris@0: $term = Term::load(1); Chris@0: $this->assertEquals($term->bundle(), 'categories'); Chris@0: $term = Term::load(2); Chris@0: $this->assertEquals($term->bundle(), 'tags'); Chris@0: } Chris@0: Chris@0: }