function MigrateVocabularyFieldInstanceTest::testVocabularyFieldInstance

Same name in this branch
  1. 10 core/modules/forum/tests/src/Kernel/Migrate/d6/MigrateVocabularyFieldInstanceTest.php \Drupal\Tests\forum\Kernel\Migrate\d6\MigrateVocabularyFieldInstanceTest::testVocabularyFieldInstance()
Same name in other branches
  1. 9 core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyFieldInstanceTest.php \Drupal\Tests\taxonomy\Kernel\Migrate\d6\MigrateVocabularyFieldInstanceTest::testVocabularyFieldInstance()
  2. 8.9.x core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyFieldInstanceTest.php \Drupal\Tests\taxonomy\Kernel\Migrate\d6\MigrateVocabularyFieldInstanceTest::testVocabularyFieldInstance()
  3. 11.x core/modules/forum/tests/src/Kernel/Migrate/d6/MigrateVocabularyFieldInstanceTest.php \Drupal\Tests\forum\Kernel\Migrate\d6\MigrateVocabularyFieldInstanceTest::testVocabularyFieldInstance()
  4. 11.x core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyFieldInstanceTest.php \Drupal\Tests\taxonomy\Kernel\Migrate\d6\MigrateVocabularyFieldInstanceTest::testVocabularyFieldInstance()

Tests the Drupal 6 vocabulary-node type association to Drupal 8 migration.

File

core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyFieldInstanceTest.php, line 41

Class

MigrateVocabularyFieldInstanceTest
Vocabulary field instance migration.

Namespace

Drupal\Tests\taxonomy\Kernel\Migrate\d6

Code

public function testVocabularyFieldInstance() : void {
    $this->executeMigration('d6_vocabulary_field_instance');
    // Test that the field exists. Tags has a multilingual option of 'None'.
    $field_id = 'node.article.field_tags';
    $field = FieldConfig::load($field_id);
    $this->assertSame($field_id, $field->id(), 'Field instance exists on article bundle.');
    $this->assertSame('Tags', $field->label());
    $this->assertTrue($field->isRequired(), 'Field is required');
    $this->assertFalse($field->isTranslatable());
    $this->assertTargetBundles($field_id, [
        'tags' => 'tags',
    ]);
    // Test the page bundle as well. Tags has a multilingual option of 'None'.
    $field_id = 'node.page.field_tags';
    $field = FieldConfig::load($field_id);
    $this->assertSame($field_id, $field->id(), 'Field instance exists on page bundle.');
    $this->assertSame('Tags', $field->label());
    $this->assertTrue($field->isRequired(), 'Field is required');
    $this->assertFalse($field->isTranslatable());
    $settings = $field->getSettings();
    $this->assertSame('default:taxonomy_term', $settings['handler'], 'The handler plugin ID is correct.');
    $this->assertTargetBundles($field_id, [
        'tags' => 'tags',
    ]);
    $this->assertTrue($settings['handler_settings']['auto_create'], 'The "auto_create" setting is correct.');
    $this->assertSame([
        [
            'node',
            'article',
            'field_tags',
        ],
    ], $this->getMigration('d6_vocabulary_field_instance')
        ->getIdMap()
        ->lookupDestinationIds([
        4,
        'article',
    ]));
    // Test the field vocabulary_1_i_0_ with multilingual option,
    // 'per language terms'.
    $field_id = 'node.story.field_vocabulary_1_i_0_';
    $field = FieldConfig::load($field_id);
    $this->assertFalse($field->isRequired(), 'Field is not required');
    $this->assertTrue($field->isTranslatable());
    $this->assertTargetBundles($field_id, [
        'vocabulary_1_i_0_' => 'vocabulary_1_i_0_',
    ]);
    // Test the field vocabulary_2_i_0_ with multilingual option,
    // 'Set language to vocabulary'.
    $field_id = 'node.story.field_vocabulary_2_i_1_';
    $field = FieldConfig::load($field_id);
    $this->assertFalse($field->isRequired(), 'Field is not required');
    $this->assertFalse($field->isTranslatable());
    $this->assertTargetBundles($field_id, [
        'vocabulary_2_i_1_' => 'vocabulary_2_i_1_',
    ]);
    // Test the field vocabulary_3_i_0_ with multilingual option,
    // 'Localize terms'.
    $field_id = 'node.story.field_vocabulary_3_i_2_';
    $field = FieldConfig::load($field_id);
    $this->assertFalse($field->isRequired(), 'Field is not required');
    $this->assertTrue($field->isTranslatable());
    $this->assertTargetBundles($field_id, [
        'vocabulary_3_i_2_' => 'vocabulary_3_i_2_',
    ]);
    // Tests that a vocabulary named like a D8 base field will be migrated and
    // prefixed with 'field_' to avoid conflicts.
    $field_type = FieldConfig::load('node.sponsor.field_type');
    $this->assertInstanceOf(FieldConfig::class, $field_type);
    $this->assertTrue($field->isTranslatable());
    $this->assertTargetBundles($field_id, [
        'vocabulary_3_i_2_' => 'vocabulary_3_i_2_',
    ]);
    $this->assertTargetBundles('node.employee.field_vocabulary_3_i_2_', [
        'vocabulary_3_i_2_' => 'vocabulary_3_i_2_',
    ]);
}

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