From e66016814fcc95e2861a0902dd91776c4a3b1372 Mon Sep 17 00:00:00 2001 From: Nathaniel Catchpole <catch@35733.no-reply.drupal.org> Date: Wed, 9 Mar 2016 11:01:30 +0900 Subject: [PATCH] Issue #2616220 by webflo, quietone: Obey field cardinality in vocabulary migration --- core/modules/migrate_drupal/tests/fixtures/drupal6.php | 2 +- .../taxonomy/migration_templates/d6_vocabulary_field.yml | 3 +-- .../taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php | 2 ++ .../Tests/Migrate/d6/MigrateVocabularyFieldInstanceTest.php | 1 + .../src/Tests/Migrate/d6/MigrateVocabularyFieldTest.php | 2 ++ .../taxonomy/tests/src/Unit/Migrate/d6/VocabularyTest.php | 3 +++ 6 files changed, 10 insertions(+), 3 deletions(-) diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal6.php b/core/modules/migrate_drupal/tests/fixtures/drupal6.php index 3b9efe524eb1..8f883003afd8 100644 --- a/core/modules/migrate_drupal/tests/fixtures/drupal6.php +++ b/core/modules/migrate_drupal/tests/fixtures/drupal6.php @@ -34072,7 +34072,7 @@ 'help' => '', 'relations' => '1', 'hierarchy' => '2', - 'multiple' => '0', + 'multiple' => '1', 'required' => '0', 'tags' => '0', 'module' => 'taxonomy', diff --git a/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml b/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml index 5139f318b993..a1c97356f04d 100644 --- a/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml +++ b/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml @@ -8,7 +8,6 @@ source: entity_type: node type: entity_reference target_entity_type: taxonomy_term - cardinality: -1 process: entity_type: 'constants/entity_type' type: 'constants/type' @@ -21,7 +20,7 @@ process: plugin: skip_on_empty method: row 'settings/target_type': 'constants/target_entity_type' - cardinality: 'constants/cardinality' + cardinality: cardinality destination: plugin: md_entity:field_storage_config migration_dependencies: diff --git a/core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php b/core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php index d2d3f19853a1..5c605bb4fc3f 100644 --- a/core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php +++ b/core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php @@ -9,6 +9,7 @@ use Drupal\migrate\Row; use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase; +use Drupal\Core\Field\FieldStorageDefinitionInterface; /** * Drupal 6 vocabularies source from database. @@ -72,6 +73,7 @@ public function prepareRow(Row $row) { ->execute() ->fetchCol(); $row->setSourceProperty('node_types', $node_types); + $row->setSourceProperty('cardinality', ($row->getSourceProperty('tags') == 1 || $row->getSourceProperty('multiple') == 1) ? FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED : 1); return parent::prepareRow($row); } diff --git a/core/modules/taxonomy/src/Tests/Migrate/d6/MigrateVocabularyFieldInstanceTest.php b/core/modules/taxonomy/src/Tests/Migrate/d6/MigrateVocabularyFieldInstanceTest.php index bab6ae552ad2..8f2307da419c 100644 --- a/core/modules/taxonomy/src/Tests/Migrate/d6/MigrateVocabularyFieldInstanceTest.php +++ b/core/modules/taxonomy/src/Tests/Migrate/d6/MigrateVocabularyFieldInstanceTest.php @@ -10,6 +10,7 @@ use Drupal\field\Entity\FieldConfig; use Drupal\migrate\Entity\Migration; use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase; +use Drupal\taxonomy\Entity\Vocabulary; /** * Vocabulary field instance migration. diff --git a/core/modules/taxonomy/src/Tests/Migrate/d6/MigrateVocabularyFieldTest.php b/core/modules/taxonomy/src/Tests/Migrate/d6/MigrateVocabularyFieldTest.php index 9e866d82eb05..b8d99ed879f8 100644 --- a/core/modules/taxonomy/src/Tests/Migrate/d6/MigrateVocabularyFieldTest.php +++ b/core/modules/taxonomy/src/Tests/Migrate/d6/MigrateVocabularyFieldTest.php @@ -37,11 +37,13 @@ protected function setUp() { public function testVocabularyField() { // Test that the field exists. $field_storage_id = 'node.tags'; + /** @var \Drupal\field\FieldStorageConfigInterface $field_storage */ $field_storage = FieldStorageConfig::load($field_storage_id); $this->assertIdentical($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->assertIdentical(array('node', 'tags'), Migration::load('d6_vocabulary_field')->getIdMap()->lookupDestinationID(array(4)), "Test IdMap"); } diff --git a/core/modules/taxonomy/tests/src/Unit/Migrate/d6/VocabularyTest.php b/core/modules/taxonomy/tests/src/Unit/Migrate/d6/VocabularyTest.php index 60362d73c89c..ab263d1975bc 100644 --- a/core/modules/taxonomy/tests/src/Unit/Migrate/d6/VocabularyTest.php +++ b/core/modules/taxonomy/tests/src/Unit/Migrate/d6/VocabularyTest.php @@ -8,6 +8,7 @@ namespace Drupal\Tests\taxonomy\Unit\Migrate\d6; use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase; +use Drupal\Core\Field\FieldStorageDefinitionInterface; /** * Tests D6 vocabulary source plugin. @@ -39,6 +40,7 @@ class VocabularyTest extends MigrateSqlSourceTestCase { 'module' => 'taxonomy', 'weight' => 0, 'node_types' => ['page', 'article'], + 'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED, ], [ 'vid' => 2, @@ -53,6 +55,7 @@ class VocabularyTest extends MigrateSqlSourceTestCase { 'module' => 'taxonomy', 'weight' => 0, 'node_types' => ['article'], + 'cardinality' => 1, ], ]; -- GitLab