diff --git a/core/modules/migrate_drupal/migrate_drupal.module b/core/modules/migrate_drupal/migrate_drupal.module index 9b00e07eb1155c5ad5ac8c619eefb888df4f98c9..8399f3f4fa884e21c4546bc3f66e70dfec9ff315 100644 --- a/core/modules/migrate_drupal/migrate_drupal.module +++ b/core/modules/migrate_drupal/migrate_drupal.module @@ -56,9 +56,9 @@ function migrate_drupal_migration_plugins_alter(&$definitions) { $source_vid = $row->getSourceProperty('vid'); $plugin_ids = ['d6_term_node:' . $source_vid, 'd6_term_node_revision:' . $source_vid]; foreach ($plugin_ids as $plugin_id) { - if (isset($definitions[$plugin_id])) { - $definitions[$plugin_id]['process'][$row->getDestinationProperty('vid')] = 'tid'; - } + // Match the field name derivation in d6_vocabulary_field.yml. + $field_name = substr('field_' . $row->getDestinationProperty('vid'), 0, 32); + $definitions[$plugin_id]['process'][$field_name] = 'tid'; } } } diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal6.php b/core/modules/migrate_drupal/tests/fixtures/drupal6.php index 0003684ebbb44cec3cc46b3a171d4e2351dc83f4..a7beb5b439a1aee2eca36d576918cfbd94fe197f 100644 --- a/core/modules/migrate_drupal/tests/fixtures/drupal6.php +++ b/core/modules/migrate_drupal/tests/fixtures/drupal6.php @@ -9558,6 +9558,14 @@ 'objectindex' => '0', 'format' => '0', )) +->values(array( + 'lid' => '1672', + 'objectid' => '6', + 'type' => 'vocabulary', + 'property' => 'name', + 'objectindex' => '6', + 'format' => '0', +)) ->execute(); $connection->schema()->createTable('i18n_variable', array( @@ -22010,6 +22018,13 @@ 'source' => '%name: Title mismatch. Please check your selection.', 'version' => 'none', )) +->values(array( + 'lid' => '1672', + 'location' => 'vocabulary:6:name', + 'textgroup' => 'taxonomy', + 'source' => 'Type', + 'version' => '1', +)) ->execute(); $connection->schema()->createTable('locales_target', array( @@ -48226,6 +48241,20 @@ 'weight' => '7', 'language' => '', )) +->values(array( + 'vid' => '6', + 'name' => 'Type', + 'description' => '', + 'help' => '', + 'relations' => '1', + 'hierarchy' => '0', + 'multiple' => '0', + 'required' => '0', + 'tags' => '0', + 'module' => 'taxonomy', + 'weight' => '0', + 'language' => '', +)) ->execute(); $connection->schema()->createTable('vocabulary_node_types', array( @@ -48268,6 +48297,10 @@ 'vid' => '4', 'type' => 'page', )) +->values(array( + 'vid' => '6', + 'type' => 'sponsor', +)) ->values(array( 'vid' => '1', 'type' => 'story', diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php index 1c4b883a35bd7065168269f61e19b7d2f6976c6e..418addc899c0c9e92a551b76c476f6f5d9f97c8e 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php @@ -60,7 +60,7 @@ protected function getEntityCounts() { 'action' => 23, 'menu' => 8, 'taxonomy_term' => 7, - 'taxonomy_vocabulary' => 6, + 'taxonomy_vocabulary' => 7, 'tour' => 4, 'user' => 7, 'user_role' => 6, diff --git a/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_display.yml b/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_display.yml index 8f154c3c8214f419550253aa81b5e384a887412d..e0f462531bad85c1633b09ca7b1c6c75561a2a8f 100644 --- a/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_display.yml +++ b/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_display.yml @@ -11,6 +11,7 @@ source: label: hidden type: entity_reference_label weight: 20 + field_prefix: field_ process: entity_type: 'constants/entity_type' view_mode: 'constants/view_mode' @@ -23,10 +24,26 @@ process: - plugin: skip_on_empty method: row + # This value is only used in the 'field_name' process pipeline below. + raw_field_name: + - + plugin: migration_lookup + migration: d6_taxonomy_vocabulary + source: vid + - + plugin: skip_on_empty + method: row field_name: - plugin: migration_lookup - migration: d6_taxonomy_vocabulary - source: vid + # Prepend field_ to avoid conflicts with base fields, and make sure the + # result is no longer than 32 characters. + - + plugin: concat + source: + - constants/field_prefix + - '@raw_field_name' + - + plugin: substr + length: 32 destination: plugin: component_entity_display migration_dependencies: diff --git a/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_form_display.yml b/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_form_display.yml index 4ac6d646bca500289aa79ae8d728563b82084a63..20bb0e40c96a886cd099fdc2b2f51dd6f0070a88 100644 --- a/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_form_display.yml +++ b/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_form_display.yml @@ -9,6 +9,7 @@ source: form_mode: default options: weight: 20 + field_prefix: field_ process: entity_type: 'constants/entity_type' form_mode: 'constants/form_mode' @@ -27,10 +28,26 @@ process: - plugin: skip_on_empty method: row + # This value is only used in the 'field_name' process pipeline below. + raw_field_name: + - + plugin: migration_lookup + migration: d6_taxonomy_vocabulary + source: vid + - + plugin: skip_on_empty + method: row field_name: - plugin: migration_lookup - migration: d6_taxonomy_vocabulary - source: vid + # Prepend field_ to avoid conflicts with base fields, and make sure the + # result is no longer than 32 characters. + - + plugin: concat + source: + - constants/field_prefix + - '@raw_field_name' + - + plugin: substr + length: 32 destination: plugin: component_entity_form_display migration_dependencies: diff --git a/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml b/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml index 082386fdffa6480412bdd4d10be3203642d1d913..bb4a94223f905957c5df733557c75bfc91d0916b 100644 --- a/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml +++ b/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml @@ -8,10 +8,12 @@ source: entity_type: node type: entity_reference target_entity_type: taxonomy_term + field_prefix: field_ process: entity_type: 'constants/entity_type' type: 'constants/type' - field_name: + # This value is only used in the 'field_name' process pipeline below. + raw_field_name: - plugin: migration_lookup migration: d6_taxonomy_vocabulary @@ -19,6 +21,17 @@ process: - plugin: skip_on_empty method: row + field_name: + # Prepend field_ to avoid conflicts with base fields, and make sure the + # result is no longer than 32 characters. + - + plugin: concat + source: + - constants/field_prefix + - '@raw_field_name' + - + plugin: substr + length: 32 'settings/target_type': 'constants/target_entity_type' cardinality: cardinality destination: diff --git a/core/modules/taxonomy/migration_templates/d6_vocabulary_field_instance.yml b/core/modules/taxonomy/migration_templates/d6_vocabulary_field_instance.yml index 6fe5eed0175cb6d350c501aadd18bb22ad1e2d3e..6d9ffa63f9a6bccf71daa9fa9152e1796adc387c 100644 --- a/core/modules/taxonomy/migration_templates/d6_vocabulary_field_instance.yml +++ b/core/modules/taxonomy/migration_templates/d6_vocabulary_field_instance.yml @@ -8,6 +8,7 @@ source: entity_type: node auto_create: true selection_handler: 'default:taxonomy_term' + field_prefix: field_ process: entity_type: 'constants/entity_type' bundle: @@ -18,7 +19,8 @@ process: - plugin: skip_on_empty method: row - field_name: + # This value is only used in the 'field_name' process pipeline below. + raw_field_name: - plugin: migration_lookup migration: d6_taxonomy_vocabulary @@ -26,6 +28,17 @@ process: - plugin: skip_on_empty method: row + field_name: + # Prepend field_ to avoid conflicts with base fields, and make sure the + # result is no longer than 32 characters. + - + plugin: concat + source: + - constants/field_prefix + - '@raw_field_name' + - + plugin: substr + length: 32 label: name 'settings/handler': 'constants/selection_handler' 'settings/handler_settings/target_bundles/0': '@field_name' diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTaxonomyTermTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTaxonomyTermTest.php index 12b9a9cd1d4414aaa9ea0f97f6f062a8cbc2b9c9..6450e4d91e47a7c7a3142fba80f3a7ad97882731 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTaxonomyTermTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTaxonomyTermTest.php @@ -89,8 +89,8 @@ public function testTaxonomyTerms() { $language = isset($values['language']) ? $values['language'] . ' - ' : ''; $this->assertSame("{$language}term {$tid} of vocabulary {$values['source_vid']}", $term->name->value); $this->assertSame("{$language}description of term {$tid} of vocabulary {$values['source_vid']}", $term->description->value); - $this->assertIdentical($values['vid'], $term->vid->target_id); - $this->assertIdentical((string) $values['weight'], $term->weight->value); + $this->assertSame($values['vid'], $term->vid->target_id); + $this->assertSame((string) $values['weight'], $term->weight->value); if ($values['parent'] === [0]) { $this->assertNull($term->parent->target_id); } @@ -99,7 +99,7 @@ public function testTaxonomyTerms() { foreach (\Drupal::entityManager()->getStorage('taxonomy_term')->loadParents($tid) as $parent) { $parents[] = (int) $parent->id(); } - $this->assertIdentical($parents, $values['parent']); + $this->assertSame($parents, $values['parent']); } $this->assertArrayHasKey($tid, $tree_terms, "Term $tid exists in vocabulary tree"); diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTaxonomyVocabularyTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTaxonomyVocabularyTest.php index 6c665980b2ee0499ce3f4cc14dbab8e94b11c5eb..79e188b9e0cca0b5ddeeeab910ad06d671735a9f 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTaxonomyVocabularyTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTaxonomyVocabularyTest.php @@ -32,17 +32,17 @@ public function testTaxonomyVocabulary() { for ($i = 0; $i < 3; $i++) { $j = $i + 1; $vocabulary = Vocabulary::load("vocabulary_{$j}_i_{$i}_"); - $this->assertIdentical($this->getMigration('d6_taxonomy_vocabulary')->getIdMap()->lookupDestinationID([$j]), [$vocabulary->id()]); - $this->assertIdentical("vocabulary $j (i=$i)", $vocabulary->label()); - $this->assertIdentical("description of vocabulary $j (i=$i)", $vocabulary->getDescription()); - $this->assertIdentical($i, $vocabulary->getHierarchy()); - $this->assertIdentical(4 + $i, $vocabulary->get('weight')); + $this->assertSame($this->getMigration('d6_taxonomy_vocabulary')->getIdMap()->lookupDestinationID([$j]), [$vocabulary->id()]); + $this->assertSame("vocabulary $j (i=$i)", $vocabulary->label()); + $this->assertSame("description of vocabulary $j (i=$i)", $vocabulary->getDescription()); + $this->assertSame($i, $vocabulary->getHierarchy()); + $this->assertSame(4 + $i, $vocabulary->get('weight')); } $vocabulary = Vocabulary::load('vocabulary_name_much_longer_than'); - $this->assertIdentical('vocabulary name much longer than thirty two characters', $vocabulary->label()); - $this->assertIdentical('description of vocabulary name much longer than thirty two characters', $vocabulary->getDescription()); - $this->assertIdentical(3, $vocabulary->getHierarchy()); - $this->assertIdentical(7, $vocabulary->get('weight')); + $this->assertSame('vocabulary name much longer than thirty two characters', $vocabulary->label()); + $this->assertSame('description of vocabulary name much longer than thirty two characters', $vocabulary->getDescription()); + $this->assertSame(3, $vocabulary->getHierarchy()); + $this->assertSame(7, $vocabulary->get('weight')); } } diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermNodeRevisionTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermNodeRevisionTest.php index e002ef4f9e332c084e53bd31d5d4879d05e18570..614725d966ecc017136a368231571d667a4189b9 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermNodeRevisionTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermNodeRevisionTest.php @@ -32,9 +32,9 @@ protected function setUp() { */ public function testTermRevisionNode() { $node = \Drupal::entityManager()->getStorage('node')->loadRevision(2); - $this->assertIdentical(2, count($node->vocabulary_3_i_2_)); - $this->assertIdentical('4', $node->vocabulary_3_i_2_[0]->target_id); - $this->assertIdentical('5', $node->vocabulary_3_i_2_[1]->target_id); + $this->assertSame(2, count($node->field_vocabulary_3_i_2_)); + $this->assertSame('4', $node->field_vocabulary_3_i_2_[0]->target_id); + $this->assertSame('5', $node->field_vocabulary_3_i_2_[1]->target_id); } } diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermNodeTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermNodeTest.php index c13c4dbac920c49435434fdedcab416adf723517..8e7d13de0e30d051a4198cb02333d3c407759d53 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermNodeTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermNodeTest.php @@ -40,12 +40,12 @@ public function testTermNode() { $nodes = Node::loadMultiple([1, 2]); $node = $nodes[1]; - $this->assertIdentical(1, count($node->vocabulary_1_i_0_)); - $this->assertIdentical('1', $node->vocabulary_1_i_0_[0]->target_id); + $this->assertSame(1, count($node->field_vocabulary_1_i_0_)); + $this->assertSame('1', $node->field_vocabulary_1_i_0_[0]->target_id); $node = $nodes[2]; - $this->assertIdentical(2, count($node->vocabulary_2_i_1_)); - $this->assertIdentical('2', $node->vocabulary_2_i_1_[0]->target_id); - $this->assertIdentical('3', $node->vocabulary_2_i_1_[1]->target_id); + $this->assertSame(2, count($node->field_vocabulary_2_i_1_)); + $this->assertSame('2', $node->field_vocabulary_2_i_1_[0]->target_id); + $this->assertSame('3', $node->field_vocabulary_2_i_1_[1]->target_id); } /** diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyEntityDisplayTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyEntityDisplayTest.php index f6fb85d74aea8ed1dd2f234af25eef617b8aecd3..5b8a6388745d4da8dcc166a17bd4522514c3b327 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyEntityDisplayTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyEntityDisplayTest.php @@ -41,11 +41,16 @@ public function testVocabularyEntityDisplay() { $this->executeMigration('d6_vocabulary_entity_display'); // Test that the field exists. - $component = EntityViewDisplay::load('node.page.default')->getComponent('tags'); - $this->assertIdentical('entity_reference_label', $component['type']); - $this->assertIdentical(20, $component['weight']); + $component = EntityViewDisplay::load('node.page.default')->getComponent('field_tags'); + $this->assertSame('entity_reference_label', $component['type']); + $this->assertSame(20, $component['weight']); // Test the Id map. - $this->assertIdentical(['node', 'article', 'default', 'tags'], $this->getMigration('d6_vocabulary_entity_display')->getIdMap()->lookupDestinationID([4, 'article'])); + $this->assertSame(['node', 'article', 'default', 'field_tags'], $this->getMigration('d6_vocabulary_entity_display')->getIdMap()->lookupDestinationID([4, 'article'])); + + // Tests that a vocabulary named like a D8 base field will be migrated and + // prefixed with 'field_' to avoid conflicts. + $field_type = EntityViewDisplay::load('node.sponsor.default')->getComponent('field_type'); + $this->assertTrue(is_array($field_type)); } /** diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyEntityFormDisplayTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyEntityFormDisplayTest.php index 93ac64369fac60af09867efe81b1f07133a05757..2c96e51760084502714fecc75a7e8a30cb910167 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyEntityFormDisplayTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyEntityFormDisplayTest.php @@ -41,16 +41,21 @@ public function testVocabularyEntityFormDisplay() { $this->executeMigration('d6_vocabulary_entity_form_display'); // Test that the field exists. - $component = EntityFormDisplay::load('node.page.default')->getComponent('tags'); - $this->assertIdentical('options_select', $component['type']); - $this->assertIdentical(20, $component['weight']); + $component = EntityFormDisplay::load('node.page.default')->getComponent('field_tags'); + $this->assertSame('options_select', $component['type']); + $this->assertSame(20, $component['weight']); // Test the Id map. - $this->assertIdentical(['node', 'article', 'default', 'tags'], $this->getMigration('d6_vocabulary_entity_form_display')->getIdMap()->lookupDestinationID([4, 'article'])); + $this->assertSame(['node', 'article', 'default', 'field_tags'], $this->getMigration('d6_vocabulary_entity_form_display')->getIdMap()->lookupDestinationID([4, 'article'])); // Test the term widget tags setting. $entity_form_display = EntityFormDisplay::load('node.story.default'); - $this->assertIdentical($entity_form_display->getComponent('vocabulary_1_i_0_')['type'], 'options_select'); - $this->assertIdentical($entity_form_display->getComponent('vocabulary_2_i_1_')['type'], 'entity_reference_autocomplete_tags'); + $this->assertSame($entity_form_display->getComponent('field_vocabulary_1_i_0_')['type'], 'options_select'); + $this->assertSame($entity_form_display->getComponent('field_vocabulary_2_i_1_')['type'], 'entity_reference_autocomplete_tags'); + + // Tests that a vocabulary named like a D8 base field will be migrated and + // prefixed with 'field_' to avoid conflicts. + $field_type = EntityFormDisplay::load('node.sponsor.default')->getComponent('field_type'); + $this->assertTrue(is_array($field_type)); } /** diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyFieldInstanceTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyFieldInstanceTest.php index bd5a497dd7f260a1e954c01e67d63c11ab1c490b..26cd7f581a4cf72cbf1c9a1f0f93277c96d3b6c9 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyFieldInstanceTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyFieldInstanceTest.php @@ -40,30 +40,35 @@ public function testVocabularyFieldInstance() { $this->executeMigration('d6_vocabulary_field_instance'); // Test that the field exists. - $field_id = 'node.article.tags'; + $field_id = 'node.article.field_tags'; $field = FieldConfig::load($field_id); - $this->assertIdentical($field_id, $field->id(), 'Field instance exists on article bundle.'); - $this->assertIdentical('Tags', $field->label()); + $this->assertSame($field_id, $field->id(), 'Field instance exists on article bundle.'); + $this->assertSame('Tags', $field->label()); $this->assertTrue($field->isRequired(), 'Field is required'); // Test the page bundle as well. - $field_id = 'node.page.tags'; + $field_id = 'node.page.field_tags'; $field = FieldConfig::load($field_id); - $this->assertIdentical($field_id, $field->id(), 'Field instance exists on page bundle.'); - $this->assertIdentical('Tags', $field->label()); + $this->assertSame($field_id, $field->id(), 'Field instance exists on page bundle.'); + $this->assertSame('Tags', $field->label()); $this->assertTrue($field->isRequired(), 'Field is required'); $settings = $field->getSettings(); - $this->assertIdentical('default:taxonomy_term', $settings['handler'], 'The handler plugin ID is correct.'); - $this->assertIdentical(['tags'], $settings['handler_settings']['target_bundles'], 'The target_bundles handler setting is correct.'); - $this->assertIdentical(TRUE, $settings['handler_settings']['auto_create'], 'The "auto_create" setting is correct.'); + $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->assertSame(TRUE, $settings['handler_settings']['auto_create'], 'The "auto_create" setting is correct.'); - $this->assertIdentical(['node', 'article', 'tags'], $this->getMigration('d6_vocabulary_field_instance')->getIdMap()->lookupDestinationID([4, 'article'])); + $this->assertSame(['node', 'article', 'field_tags'], $this->getMigration('d6_vocabulary_field_instance')->getIdMap()->lookupDestinationID([4, 'article'])); // Test the the field vocabulary_1_i_0_. - $field_id = 'node.story.vocabulary_1_i_0_'; + $field_id = 'node.story.field_vocabulary_1_i_0_'; $field = FieldConfig::load($field_id); $this->assertFalse($field->isRequired(), 'Field is not required'); + + // 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); } /** diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyFieldTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyFieldTest.php index 784da4a951491b6ee2ad4ac2001264c755c37d5e..d294ec481d63622e4782c4e8d89d477accc6f973 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyFieldTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateVocabularyFieldTest.php @@ -30,16 +30,21 @@ protected function setUp() { */ public function testVocabularyField() { // Test that the field exists. - $field_storage_id = 'node.tags'; + $field_storage_id = 'node.field_tags'; /** @var \Drupal\field\FieldStorageConfigInterface $field_storage */ $field_storage = FieldStorageConfig::load($field_storage_id); - $this->assertIdentical($field_storage_id, $field_storage->id()); + $this->assertSame($field_storage_id, $field_storage->id()); $settings = $field_storage->getSettings(); - $this->assertIdentical('taxonomy_term', $settings['target_type'], "Target type is correct."); - $this->assertIdentical(1, $field_storage->getCardinality(), "Field cardinality in 1."); + $this->assertSame('taxonomy_term', $settings['target_type'], "Target type is correct."); + $this->assertSame(1, $field_storage->getCardinality(), "Field cardinality in 1."); - $this->assertIdentical(['node', 'tags'], $this->getMigration('d6_vocabulary_field')->getIdMap()->lookupDestinationID([4]), "Test IdMap"); + $this->assertSame(['node', 'field_tags'], $this->getMigration('d6_vocabulary_field')->getIdMap()->lookupDestinationID([4]), "Test IdMap"); + + // Tests that a vocabulary named like a D8 base field will be migrated and + // prefixed with 'field_' to avoid conflicts. + $field_type = FieldStorageConfig::load('node.field_type'); + $this->assertInstanceOf(FieldStorageConfig::class, $field_type); } }