Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / menu_link_content / tests / src / Kernel / Migrate / d6 / MigrateMenuLinkTest.php
index f1368ed43bfcb8da4f4a2f6ef77faed681f70b76..8fab083230ea3d6b243dac680d5c8cda8b287ee8 100644 (file)
@@ -3,19 +3,27 @@
 namespace Drupal\Tests\menu_link_content\Kernel\Migrate\d6;
 
 use Drupal\menu_link_content\Entity\MenuLinkContent;
-use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
+use Drupal\menu_link_content\MenuLinkContentInterface;
+use Drupal\Tests\node\Kernel\Migrate\d6\MigrateNodeTestBase;
 
 /**
  * Menu link migration.
  *
  * @group migrate_drupal_6
  */
-class MigrateMenuLinkTest extends MigrateDrupal6TestBase {
+class MigrateMenuLinkTest extends MigrateNodeTestBase {
 
   /**
    * {@inheritdoc}
    */
-  public static $modules = ['menu_ui', 'menu_link_content'];
+  public static $modules = [
+    'content_translation',
+    'language',
+    'menu_link_content',
+    // Required for translation migrations.
+    'migrate_drupal_multilingual',
+    'menu_ui',
+  ];
 
   /**
    * {@inheritdoc}
@@ -23,53 +31,76 @@ class MigrateMenuLinkTest extends MigrateDrupal6TestBase {
   protected function setUp() {
     parent::setUp();
     $this->installEntitySchema('menu_link_content');
-    $this->executeMigrations(['d6_menu', 'd6_menu_links']);
+    $this->executeMigrations([
+      'language',
+      'd6_language_content_settings',
+      'd6_node',
+      'd6_node_translation',
+      'd6_menu',
+      'd6_menu_links',
+      'node_translation_menu_links',
+    ]);
+  }
+
+  /**
+   * Asserts various aspects of a menu link entity.
+   *
+   * @param string $id
+   *   The link ID.
+   * @param string $title
+   *   The expected title of the link.
+   * @param string $menu
+   *   The expected ID of the menu to which the link will belong.
+   * @param string $description
+   *   The link's expected description.
+   * @param bool $enabled
+   *   Whether the link is enabled.
+   * @param bool $expanded
+   *   Whether the link is expanded.
+   * @param array $attributes
+   *   Additional attributes the link is expected to have.
+   * @param string $uri
+   *   The expected URI of the link.
+   * @param int $weight
+   *   The expected weight of the link.
+   *
+   * @return \Drupal\menu_link_content\MenuLinkContentInterface
+   *   The menu link content.
+   */
+  protected function assertEntity($id, $title, $menu, $description, $enabled, $expanded, array $attributes, $uri, $weight) {
+    /** @var \Drupal\menu_link_content\MenuLinkContentInterface $menu_link */
+    $menu_link = MenuLinkContent::load($id);
+    $this->assertInstanceOf(MenuLinkContentInterface::class, $menu_link);
+    $this->assertSame($title, $menu_link->getTitle());
+    $this->assertSame($menu, $menu_link->getMenuName());
+    $this->assertSame($description, $menu_link->getDescription());
+    $this->assertSame($enabled, $menu_link->isEnabled());
+    $this->assertSame($expanded, $menu_link->isExpanded());
+    $this->assertSame($attributes, $menu_link->link->options);
+    $this->assertSame($uri, $menu_link->link->uri);
+    $this->assertSame($weight, $menu_link->getWeight());
+    return $menu_link;
   }
 
   /**
    * Tests migration of menu links.
    */
   public function testMenuLinks() {
-    $menu_link = MenuLinkContent::load(138);
-    $this->assertIdentical('Test 1', $menu_link->getTitle());
-    $this->assertIdentical('secondary-links', $menu_link->getMenuName());
-    $this->assertIdentical('Test menu link 1', $menu_link->getDescription());
-    $this->assertIdentical(TRUE, $menu_link->isEnabled());
-    $this->assertIdentical(FALSE, $menu_link->isExpanded());
-    $this->assertIdentical(['attributes' => ['title' => 'Test menu link 1']], $menu_link->link->options);
-    $this->assertIdentical('internal:/user/login', $menu_link->link->uri);
-    $this->assertIdentical(-50, $menu_link->getWeight());
+    $this->assertEntity('138', 'Test 1', 'secondary-links', 'Test menu link 1', TRUE, FALSE, ['attributes' => ['title' => 'Test menu link 1'], 'langcode' => 'en'], 'internal:/user/login', -50);
+    $this->assertEntity('139', 'Test 2', 'secondary-links', 'Test menu link 2', TRUE, TRUE, ['query' => 'foo=bar', 'attributes' => ['title' => 'Test menu link 2']], 'internal:/admin', -49);
+    $this->assertEntity('140', 'Drupal.org', 'secondary-links', NULL, TRUE, FALSE, ['attributes' => ['title' => '']], 'https://www.drupal.org', -50);
 
-    $menu_link = MenuLinkContent::load(139);
-    $this->assertIdentical('Test 2', $menu_link->getTitle());
-    $this->assertIdentical('secondary-links', $menu_link->getMenuName());
-    $this->assertIdentical('Test menu link 2', $menu_link->getDescription());
-    $this->assertIdentical(TRUE, $menu_link->isEnabled());
-    $this->assertIdentical(TRUE, $menu_link->isExpanded());
-    $this->assertIdentical(['query' => 'foo=bar', 'attributes' => ['title' => 'Test menu link 2']], $menu_link->link->options);
-    $this->assertIdentical('internal:/admin', $menu_link->link->uri);
-    $this->assertIdentical(-49, $menu_link->getWeight());
+    // Assert that missing title attributes don't stop or break migration.
+    $this->assertEntity('393', 'Test 3', 'secondary-links', NULL, TRUE, FALSE, [], 'internal:/user/login', -47);
 
-    $menu_link = MenuLinkContent::load(140);
-    $this->assertIdentical('Drupal.org', $menu_link->getTitle());
-    $this->assertIdentical('secondary-links', $menu_link->getMenuName());
-    $this->assertIdentical(NULL, $menu_link->getDescription());
-    $this->assertIdentical(TRUE, $menu_link->isEnabled());
-    $this->assertIdentical(FALSE, $menu_link->isExpanded());
-    $this->assertIdentical(['attributes' => ['title' => '']], $menu_link->link->options);
-    $this->assertIdentical('https://www.drupal.org', $menu_link->link->uri);
-    $this->assertIdentical(-50, $menu_link->getWeight());
+    // Test the migration of menu links for translated nodes.
+    $this->assertEntity('459', 'The Real McCoy', 'primary-links', NULL, TRUE, FALSE, ['attributes' => ['title' => ''], 'alter' => TRUE], 'entity:node/10', 0);
+    $this->assertEntity('460', 'Le Vrai McCoy', 'primary-links', NULL, TRUE, FALSE, ['attributes' => ['title' => ''], 'alter' => TRUE], 'entity:node/10', 0);
+    $this->assertEntity('461', 'Abantu zulu', 'primary-links', NULL, TRUE, FALSE, ['attributes' => ['title' => ''], 'alter' => TRUE], 'entity:node/12', 0);
+    $this->assertEntity('462', 'The Zulu People', 'primary-links', NULL, TRUE, FALSE, ['attributes' => ['title' => ''], 'alter' => TRUE], 'entity:node/12', 0);
 
-    // assert that missing title attributes don't stop or break migration.
-    $menu_link = MenuLinkContent::load(393);
-    $this->assertIdentical('Test 3', $menu_link->getTitle());
-    $this->assertIdentical('secondary-links', $menu_link->getMenuName());
-    $this->assertIdentical(NULL, $menu_link->getDescription());
-    $this->assertIdentical(TRUE, $menu_link->isEnabled());
-    $this->assertIdentical(FALSE, $menu_link->isExpanded());
-    $this->assertIdentical([], $menu_link->link->options);
-    $this->assertIdentical('internal:/user/login', $menu_link->link->uri);
-    $this->assertIdentical(-47, $menu_link->getWeight());
+    // Test the migration of menu links translation.
+    $this->assertEntity('463', 'fr - Test 1', 'secondary-links', 'fr - Test menu link 1', TRUE, FALSE, ['attributes' => ['title' => 'fr - Test menu link 1'], 'langcode' => 'fr', 'alter' => TRUE], 'internal:/user/login', -49);
   }
 
 }