You are here

public function MigrateVocabularyFieldInstanceTest::testVocabularyFieldInstance in Drupal 9

Same name and namespace in other branches
  1. 8 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 39

Class

MigrateVocabularyFieldInstanceTest
Vocabulary field instance migration.

Namespace

Drupal\Tests\taxonomy\Kernel\Migrate\d6

Code

public function testVocabularyFieldInstance() {
  $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());

  // 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
    ->assertSame([
    'field_tags',
  ], $settings['handler_settings']['target_bundles'], 'The target_bundles handler setting is correct.');
  $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());

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

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

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