Version 1
[yaffs-website] / web / core / modules / taxonomy / tests / src / Kernel / Migrate / d6 / MigrateTaxonomyTermTest.php
diff --git a/web/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTaxonomyTermTest.php b/web/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTaxonomyTermTest.php
new file mode 100644 (file)
index 0000000..1252833
--- /dev/null
@@ -0,0 +1,107 @@
+<?php
+
+namespace Drupal\Tests\taxonomy\Kernel\Migrate\d6;
+
+use Drupal\taxonomy\Entity\Term;
+use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
+
+/**
+ * Upgrade taxonomy terms.
+ *
+ * @group migrate_drupal_6
+ */
+class MigrateTaxonomyTermTest extends MigrateDrupal6TestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['taxonomy'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('taxonomy_term');
+    $this->executeMigrations(['d6_taxonomy_vocabulary', 'd6_taxonomy_term']);
+  }
+
+  /**
+   * Tests the Drupal 6 taxonomy term to Drupal 8 migration.
+   */
+  public function testTaxonomyTerms() {
+    $expected_results = [
+      '1' => [
+        'source_vid' => 1,
+        'vid' => 'vocabulary_1_i_0_',
+        'weight' => 0,
+        'parent' => [0],
+      ],
+      '2' => [
+        'source_vid' => 2,
+        'vid' => 'vocabulary_2_i_1_',
+        'weight' => 3,
+        'parent' => [0],
+      ],
+      '3' => [
+        'source_vid' => 2,
+        'vid' => 'vocabulary_2_i_1_',
+        'weight' => 4,
+        'parent' => [2],
+      ],
+      '4' => [
+        'source_vid' => 3,
+        'vid' => 'vocabulary_3_i_2_',
+        'weight' => 6,
+        'parent' => [0],
+      ],
+      '5' => [
+        'source_vid' => 3,
+        'vid' => 'vocabulary_3_i_2_',
+        'weight' => 7,
+        'parent' => [4],
+      ],
+      '6' => [
+        'source_vid' => 3,
+        'vid' => 'vocabulary_3_i_2_',
+        'weight' => 8,
+        'parent' => [4, 5],
+      ],
+    ];
+    $terms = Term::loadMultiple(array_keys($expected_results));
+
+    // Find each term in the tree.
+    $storage = \Drupal::entityTypeManager()->getStorage('taxonomy_term');
+    $vids = array_unique(array_column($expected_results, 'vid'));
+    $tree_terms = [];
+    foreach ($vids as $vid) {
+      foreach ($storage->loadTree($vid) as $term) {
+        $tree_terms[$term->tid] = $term;
+      }
+    }
+
+    foreach ($expected_results as $tid => $values) {
+      /** @var Term $term */
+      $term = $terms[$tid];
+      $this->assertIdentical("term {$tid} of vocabulary {$values['source_vid']}", $term->name->value);
+      $this->assertIdentical("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);
+      if ($values['parent'] === [0]) {
+        $this->assertNull($term->parent->target_id);
+      }
+      else {
+        $parents = [];
+        foreach (\Drupal::entityManager()->getStorage('taxonomy_term')->loadParents($tid) as $parent) {
+          $parents[] = (int) $parent->id();
+        }
+        $this->assertIdentical($parents, $values['parent']);
+      }
+
+      $this->assertArrayHasKey($tid, $tree_terms, "Term $tid exists in vocabulary tree");
+      $tree_term = $tree_terms[$tid];
+      $this->assertEquals($values['parent'], $tree_term->parents, "Term $tid has correct parents in vocabulary tree");
+    }
+  }
+
+}