3 namespace Drupal\Tests\menu_link_content\Kernel\Plugin\migrate\source;
5 use Drupal\Component\Utility\Unicode;
6 use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
9 * Tests the menu link source plugin.
11 * @covers \Drupal\menu_link_content\Plugin\migrate\source\MenuLink
13 * @group menu_link_content
15 class MenuLinkTest extends MigrateSqlSourceTestBase {
20 public static $modules = ['menu_link_content', 'migrate_drupal'];
25 public function providerSource() {
29 $tests[0]['source_data']['menu_links'] = [
31 // Customized menu link, provided by system module.
32 'menu_name' => 'menu-test-menu',
35 'link_path' => 'admin/config/system/cron',
36 'router_path' => 'admin/config/system/cron',
37 'link_title' => 'Cron',
60 // D6 customized menu link, provided by menu module.
61 'menu_name' => 'menu-test-menu',
64 'link_path' => 'node/141',
65 'router_path' => 'node/%',
66 'link_title' => 'Node 141',
89 // D6 non-customized menu link, provided by menu module.
90 'menu_name' => 'menu-test-menu',
93 'link_path' => 'node/142',
94 'router_path' => 'node/%',
95 'link_title' => 'Node 142',
118 'menu_name' => 'menu-test-menu',
121 'link_path' => 'admin',
122 'router_path' => 'admin',
123 'link_title' => 'Test 1',
124 'options' => ['attributes' => ['title' => 'Test menu link 1']],
143 'description' => 'Test menu link 1',
146 'menu_name' => 'menu-test-menu',
149 'link_path' => 'admin/modules',
150 'router_path' => 'admin/modules',
151 'link_title' => 'Test 2',
152 'options' => ['attributes' => ['title' => 'Test menu link 2']],
171 'description' => 'Test menu link 2',
174 'menu_name' => 'menu-user',
177 'link_path' => 'admin/build/menu-customize/navigation',
178 'router_path' => 'admin/build/menu-customize/%',
179 'link_title' => 'Navigation',
203 // Add long link title attributes to source data.
204 $title = $this->getRandomGenerator()->string('500');
205 $tests[0]['source_data']['menu_links'][0]['options']['attributes']['title'] = $title;
207 // Build the expected results.
208 $expected = $tests[0]['source_data']['menu_links'];
210 // Add long link title attributes to expected results.
211 $expected[0]['description'] = Unicode::truncate($title, 255);
213 // Don't expect D6 menu link to a custom menu, provided by menu module.
216 array_walk($tests[0]['source_data']['menu_links'], function (&$row) {
217 $row['options'] = serialize($row['options']);
220 $tests[0]['expected_data'] = $expected;