c13c4dbac920c49435434fdedcab416adf723517
[yaffs-website] / web / core / modules / taxonomy / tests / src / Kernel / Migrate / d6 / MigrateTermNodeTest.php
1 <?php
2
3 namespace Drupal\Tests\taxonomy\Kernel\Migrate\d6;
4
5 use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
6 use Drupal\node\Entity\Node;
7
8 /**
9  * Upgrade taxonomy term node associations.
10  *
11  * @group migrate_drupal_6
12  */
13 class MigrateTermNodeTest extends MigrateDrupal6TestBase {
14
15   /**
16    * {@inheritdoc}
17    */
18   public static $modules = ['taxonomy', 'menu_ui'];
19
20   /**
21    * {@inheritdoc}
22    */
23   protected function setUp() {
24     parent::setUp();
25     $this->installSchema('node', ['node_access']);
26     $this->migrateContent();
27     $this->migrateTaxonomy();
28   }
29
30   /**
31    * Tests the Drupal 6 term-node association to Drupal 8 migration.
32    */
33   public function testTermNode() {
34     // This is a base plugin id and we want to run all derivatives.
35     $this->executeMigrations(['d6_term_node']);
36
37     $this->container->get('entity.manager')
38       ->getStorage('node')
39       ->resetCache([1, 2]);
40
41     $nodes = Node::loadMultiple([1, 2]);
42     $node = $nodes[1];
43     $this->assertIdentical(1, count($node->vocabulary_1_i_0_));
44     $this->assertIdentical('1', $node->vocabulary_1_i_0_[0]->target_id);
45     $node = $nodes[2];
46     $this->assertIdentical(2, count($node->vocabulary_2_i_1_));
47     $this->assertIdentical('2', $node->vocabulary_2_i_1_[0]->target_id);
48     $this->assertIdentical('3', $node->vocabulary_2_i_1_[1]->target_id);
49   }
50
51   /**
52    * Tests that term associations are ignored when they belong to nodes which
53    * were not migrated.
54    */
55   public function testSkipNonExistentNode() {
56     // Node 2 is migrated by d6_node__story, but we need to pretend that it
57     // failed, so record that in the map table.
58     $this->mockFailure('d6_node:story', ['nid' => 2, 'language' => 'en']);
59
60     // d6_term_node__2 should skip over node 2 (a.k.a. revision 3) because,
61     // according to the map table, it failed.
62     $migration = $this->getMigration('d6_term_node:2');
63     $this->executeMigration($migration);
64     $this->assertNull($migration->getIdMap()->lookupDestinationId(['vid' => 3])[0]);
65   }
66
67 }