Version 1
[yaffs-website] / web / core / modules / menu_link_content / tests / src / Kernel / Plugin / migrate / source / MenuLinkTest.php
diff --git a/web/core/modules/menu_link_content/tests/src/Kernel/Plugin/migrate/source/MenuLinkTest.php b/web/core/modules/menu_link_content/tests/src/Kernel/Plugin/migrate/source/MenuLinkTest.php
new file mode 100644 (file)
index 0000000..7fb3a91
--- /dev/null
@@ -0,0 +1,225 @@
+<?php
+
+namespace Drupal\Tests\menu_link_content\Kernel\Plugin\migrate\source;
+
+use Drupal\Component\Utility\Unicode;
+use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
+
+/**
+ * Tests the menu link source plugin.
+ *
+ * @covers \Drupal\menu_link_content\Plugin\migrate\source\MenuLink
+ *
+ * @group menu_link_content
+ */
+class MenuLinkTest extends MigrateSqlSourceTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['menu_link_content', 'migrate_drupal'];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function providerSource() {
+    $tests = [];
+
+    // The source data.
+    $tests[0]['source_data']['menu_links'] = [
+      [
+        // Customized menu link, provided by system module.
+        'menu_name' => 'menu-test-menu',
+        'mlid' => 140,
+        'plid' => 0,
+        'link_path' => 'admin/config/system/cron',
+        'router_path' => 'admin/config/system/cron',
+        'link_title' => 'Cron',
+        'options' => [],
+        'module' => 'system',
+        'hidden' => 0,
+        'external' => 0,
+        'has_children' => 0,
+        'expanded' => 0,
+        'weight' => 0,
+        'depth' => 0,
+        'customized' => 1,
+        'p1' => '0',
+        'p2' => '0',
+        'p3' => '0',
+        'p4' => '0',
+        'p5' => '0',
+        'p6' => '0',
+        'p7' => '0',
+        'p8' => '0',
+        'p9' => '0',
+        'updated' => '0',
+        'description' => '',
+      ],
+      [
+        // D6 customized menu link, provided by menu module.
+        'menu_name' => 'menu-test-menu',
+        'mlid' => 141,
+        'plid' => 0,
+        'link_path' => 'node/141',
+        'router_path' => 'node/%',
+        'link_title' => 'Node 141',
+        'options' => [],
+        'module' => 'menu',
+        'hidden' => 0,
+        'external' => 0,
+        'has_children' => 0,
+        'expanded' => 0,
+        'weight' => 0,
+        'depth' => 0,
+        'customized' => 1,
+        'p1' => '0',
+        'p2' => '0',
+        'p3' => '0',
+        'p4' => '0',
+        'p5' => '0',
+        'p6' => '0',
+        'p7' => '0',
+        'p8' => '0',
+        'p9' => '0',
+        'updated' => '0',
+        'description' => '',
+      ],
+      [
+        // D6 non-customized menu link, provided by menu module.
+        'menu_name' => 'menu-test-menu',
+        'mlid' => 142,
+        'plid' => 0,
+        'link_path' => 'node/142',
+        'router_path' => 'node/%',
+        'link_title' => 'Node 142',
+        'options' => [],
+        'module' => 'menu',
+        'hidden' => 0,
+        'external' => 0,
+        'has_children' => 0,
+        'expanded' => 0,
+        'weight' => 0,
+        'depth' => 0,
+        'customized' => 0,
+        'p1' => '0',
+        'p2' => '0',
+        'p3' => '0',
+        'p4' => '0',
+        'p5' => '0',
+        'p6' => '0',
+        'p7' => '0',
+        'p8' => '0',
+        'p9' => '0',
+        'updated' => '0',
+        'description' => '',
+      ],
+      [
+        'menu_name' => 'menu-test-menu',
+        'mlid' => 138,
+        'plid' => 0,
+        'link_path' => 'admin',
+        'router_path' => 'admin',
+        'link_title' => 'Test 1',
+        'options' => ['attributes' => ['title' => 'Test menu link 1']],
+        'module' => 'menu',
+        'hidden' => 0,
+        'external' => 0,
+        'has_children' => 1,
+        'expanded' => 0,
+        'weight' => 15,
+        'depth' => 1,
+        'customized' => 1,
+        'p1' => '138',
+        'p2' => '0',
+        'p3' => '0',
+        'p4' => '0',
+        'p5' => '0',
+        'p6' => '0',
+        'p7' => '0',
+        'p8' => '0',
+        'p9' => '0',
+        'updated' => '0',
+        'description' => 'Test menu link 1',
+      ],
+      [
+        'menu_name' => 'menu-test-menu',
+        'mlid' => 139,
+        'plid' => 138,
+        'link_path' => 'admin/modules',
+        'router_path' => 'admin/modules',
+        'link_title' => 'Test 2',
+        'options' => ['attributes' => ['title' => 'Test menu link 2']],
+        'module' => 'menu',
+        'hidden' => 0,
+        'external' => 0,
+        'has_children' => 0,
+        'expanded' => 0,
+        'weight' => 12,
+        'depth' => 2,
+        'customized' => 1,
+        'p1' => '138',
+        'p2' => '139',
+        'p3' => '0',
+        'p4' => '0',
+        'p5' => '0',
+        'p6' => '0',
+        'p7' => '0',
+        'p8' => '0',
+        'p9' => '0',
+        'updated' => '0',
+        'description' => 'Test menu link 2',
+      ],
+      [
+        'menu_name' => 'menu-user',
+        'mlid' => 143,
+        'plid' => 0,
+        'link_path' => 'admin/build/menu-customize/navigation',
+        'router_path' => 'admin/build/menu-customize/%',
+        'link_title' => 'Navigation',
+        'options' => [],
+        'module' => 'menu',
+        'hidden' => 0,
+        'external' => 0,
+        'has_children' => 0,
+        'expanded' => 0,
+        'weight' => 0,
+        'depth' => 0,
+        'customized' => 0,
+        'p1' => '0',
+        'p2' => '0',
+        'p3' => '0',
+        'p4' => '0',
+        'p5' => '0',
+        'p6' => '0',
+        'p7' => '0',
+        'p8' => '0',
+        'p9' => '0',
+        'updated' => '0',
+        'description' => '',
+      ],
+    ];
+
+    // Add long link title attributes to source data.
+    $title = $this->getRandomGenerator()->string('500');
+    $tests[0]['source_data']['menu_links'][0]['options']['attributes']['title'] = $title;
+
+    // Build the expected results.
+    $expected = $tests[0]['source_data']['menu_links'];
+
+    // Add long link title attributes to expected results.
+    $expected[0]['description'] = Unicode::truncate($title, 255);
+
+    // Don't expect D6 menu link to a custom menu, provided by menu module.
+    unset($expected[5]);
+
+    array_walk($tests[0]['source_data']['menu_links'], function (&$row) {
+      $row['options'] = serialize($row['options']);
+    });
+
+    $tests[0]['expected_data'] = $expected;
+
+    return $tests;
+  }
+
+}