function MigrateBundleTest::testMixedBundles

Same name in other branches
  1. 8.9.x core/modules/migrate/tests/src/Kernel/MigrateBundleTest.php \Drupal\Tests\migrate\Kernel\MigrateBundleTest::testMixedBundles()
  2. 10 core/modules/migrate/tests/src/Kernel/MigrateBundleTest.php \Drupal\Tests\migrate\Kernel\MigrateBundleTest::testMixedBundles()
  3. 11.x core/modules/migrate/tests/src/Kernel/MigrateBundleTest.php \Drupal\Tests\migrate\Kernel\MigrateBundleTest::testMixedBundles()

Tests setting bundles both in process and destination.

File

core/modules/migrate/tests/src/Kernel/MigrateBundleTest.php, line 117

Class

MigrateBundleTest
Tests setting of bundles on content entity migrations.

Namespace

Drupal\Tests\migrate\Kernel

Code

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());
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.