class MigrateBundleTest in Drupal 10
Same name and namespace in other branches
- 8 core/modules/migrate/tests/src/Kernel/MigrateBundleTest.php \Drupal\Tests\migrate\Kernel\MigrateBundleTest
- 9 core/modules/migrate/tests/src/Kernel/MigrateBundleTest.php \Drupal\Tests\migrate\Kernel\MigrateBundleTest
Tests setting of bundles on content entity migrations.
@group migrate
Hierarchy
- class \Drupal\KernelTests\KernelTestBase extends \PHPUnit\Framework\TestCase implements ServiceProviderInterface uses \Drupal\Tests\PhpUnitCompatibilityTrait, \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait, AssertContentTrait, ConfigTestTrait, ExtensionListTestTrait, RandomGeneratorTrait, TestRequirementsTrait, PhpUnitWarnings
- class \Drupal\Tests\migrate\Kernel\MigrateTestBase implements MigrateMessageInterface
- class \Drupal\Tests\migrate\Kernel\MigrateBundleTest
- class \Drupal\Tests\migrate\Kernel\MigrateTestBase implements MigrateMessageInterface
Expanded class hierarchy of MigrateBundleTest
File
- core/
modules/ migrate/ tests/ src/ Kernel/ MigrateBundleTest.php, line 14
Namespace
Drupal\Tests\migrate\KernelView source
class MigrateBundleTest extends MigrateTestBase {
/**
* Modules to enable.
*
* @var array
*/
protected static $modules = [
'taxonomy',
'text',
'user',
'system',
];
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
$this
->installEntitySchema('user');
$this
->installEntitySchema('taxonomy_vocabulary');
$this
->installEntitySchema('taxonomy_term');
$this
->installConfig([
'taxonomy',
]);
// Set up two vocabularies (taxonomy bundles).
Vocabulary::create([
'vid' => 'tags',
'name' => 'Tags',
]);
Vocabulary::create([
'vid' => 'categories',
'name' => 'Categories',
]);
}
/**
* Tests setting the bundle in the destination.
*/
public function testDestinationBundle() {
$term_data_rows = [
[
'id' => 1,
'name' => 'Category 1',
],
];
$ids = [
'id' => [
'type' => 'integer',
],
];
$definition = [
'id' => 'terms',
'migration_tags' => [
'Bundle test',
],
'source' => [
'plugin' => 'embedded_data',
'data_rows' => $term_data_rows,
'ids' => $ids,
],
'process' => [
'tid' => 'id',
'name' => 'name',
],
'destination' => [
'plugin' => 'entity:taxonomy_term',
'default_bundle' => 'categories',
],
'migration_dependencies' => [],
];
$term_migration = \Drupal::service('plugin.manager.migration')
->createStubMigration($definition);
// Import and validate the term entity was created with the correct bundle.
$term_executable = new MigrateExecutable($term_migration, $this);
$term_executable
->import();
/** @var \Drupal\taxonomy\Entity\Term $term */
$term = Term::load(1);
$this
->assertEquals('categories', $term
->bundle());
}
/**
* Tests setting the bundle in the process pipeline.
*/
public function testProcessBundle() {
$term_data_rows = [
[
'id' => 1,
'vocab' => 'categories',
'name' => 'Category 1',
],
[
'id' => 2,
'vocab' => 'tags',
'name' => 'Tag 1',
],
];
$ids = [
'id' => [
'type' => 'integer',
],
];
$definition = [
'id' => 'terms',
'migration_tags' => [
'Bundle test',
],
'source' => [
'plugin' => 'embedded_data',
'data_rows' => $term_data_rows,
'ids' => $ids,
],
'process' => [
'tid' => 'id',
'vid' => 'vocab',
'name' => 'name',
],
'destination' => [
'plugin' => 'entity:taxonomy_term',
],
'migration_dependencies' => [],
];
$term_migration = \Drupal::service('plugin.manager.migration')
->createStubMigration($definition);
// Import and validate the term entities were created with the correct bundle.
$term_executable = new MigrateExecutable($term_migration, $this);
$term_executable
->import();
/** @var \Drupal\taxonomy\Entity\Term $term */
$term = Term::load(1);
$this
->assertEquals('categories', $term
->bundle());
$term = Term::load(2);
$this
->assertEquals('tags', $term
->bundle());
}
/**
* Tests setting bundles both in process and destination.
*/
public function testMixedBundles() {
$term_data_rows = [
[
'id' => 1,
'vocab' => 'categories',
'name' => 'Category 1',
],
[
'id' => 2,
'name' => 'Tag 1',
],
];
$ids = [
'id' => [
'type' => 'integer',
],
];
$definition = [
'id' => 'terms',
'migration_tags' => [
'Bundle test',
],
'source' => [
'plugin' => 'embedded_data',
'data_rows' => $term_data_rows,
'ids' => $ids,
],
'process' => [
'tid' => 'id',
'vid' => 'vocab',
'name' => 'name',
],
'destination' => [
'plugin' => 'entity:taxonomy_term',
// When no vocab is provided, the destination bundle is applied.
'default_bundle' => 'tags',
],
'migration_dependencies' => [],
];
$term_migration = \Drupal::service('plugin.manager.migration')
->createStubMigration($definition);
// Import and validate the term entities were created with the correct bundle.
$term_executable = new MigrateExecutable($term_migration, $this);
$term_executable
->import();
/** @var \Drupal\taxonomy\Entity\Term $term */
$term = Term::load(1);
$this
->assertEquals('categories', $term
->bundle());
$term = Term::load(2);
$this
->assertEquals('tags', $term
->bundle());
}
}