Commit e6601681 authored by catch's avatar catch

Issue #2616220 by webflo, quietone: Obey field cardinality in vocabulary migration

parent 99151ae7
......@@ -34072,7 +34072,7 @@
'help' => '',
'relations' => '1',
'hierarchy' => '2',
'multiple' => '0',
'multiple' => '1',
'required' => '0',
'tags' => '0',
'module' => 'taxonomy',
......
......@@ -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:
......
......@@ -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);
}
......
......@@ -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.
......
......@@ -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");
}
......
......@@ -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,
],
];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment