Issue #2477337 by jhedstrom, dawehner, tim.plunkett, sumitmadan: Add test to ensure saving a menu item with internal path instead of entity reference does not lose hierarchy
parent
0a57817ff9
commit
9dd19b43a1
|
@ -46,11 +46,12 @@ class MenuLinkContentDeriverTest extends KernelTestBase {
|
|||
\Drupal::service('router.builder')->rebuild();
|
||||
|
||||
// Set up a custom menu link pointing to a specific path.
|
||||
MenuLinkContent::create([
|
||||
$parent = MenuLinkContent::create([
|
||||
'title' => '<script>alert("Welcome to the discovered jungle!")</script>',
|
||||
'link' => [['uri' => 'internal:/example-path']],
|
||||
'menu_name' => 'tools',
|
||||
])->save();
|
||||
]);
|
||||
$parent->save();
|
||||
$menu_tree = \Drupal::menuTree()->load('tools', new MenuTreeParameters());
|
||||
$this->assertEqual(1, count($menu_tree));
|
||||
/** @var \Drupal\Core\Menu\MenuLinkTreeElement $tree_element */
|
||||
|
@ -73,6 +74,39 @@ class MenuLinkContentDeriverTest extends KernelTestBase {
|
|||
$this->assertFalse($title instanceof TranslationWrapper);
|
||||
$this->assertIdentical('<script>alert("Welcome to the discovered jungle!")</script>', $title);
|
||||
$this->assertFalse(SafeMarkup::isSafe($title));
|
||||
|
||||
// Create a hierarchy.
|
||||
\Drupal::state()->set('menu_link_content_dynamic_route.routes', [
|
||||
'route_name_1' => new Route('/example-path'),
|
||||
'route_name_2' => new Route('/example-path/child'),
|
||||
]);
|
||||
$child = MenuLinkContent::create([
|
||||
'title' => 'Child',
|
||||
'link' => [['uri' => 'entity:/example-path/child']],
|
||||
'menu_name' => 'tools',
|
||||
'parent' => 'menu_link_content:' . $parent->uuid(),
|
||||
]);
|
||||
$child->save();
|
||||
$parent->set('link', [['uri' => 'entity:/example-path']]);
|
||||
$parent->save();
|
||||
$menu_tree = \Drupal::menuTree()->load('tools', new MenuTreeParameters());
|
||||
$this->assertEqual(1, count($menu_tree));
|
||||
/** @var \Drupal\Core\Menu\MenuLinkTreeElement $tree_element */
|
||||
$tree_element = reset($menu_tree);
|
||||
$this->assertTrue($tree_element->hasChildren);
|
||||
$this->assertEqual(1, count($tree_element->subtree));
|
||||
|
||||
// Edit child element link to use 'internal' instead of 'entity'.
|
||||
$child->set('link', [['uri' => 'internal:/example-path/child']]);
|
||||
$child->save();
|
||||
\Drupal::service('plugin.manager.menu.link')->rebuild();
|
||||
|
||||
$menu_tree = \Drupal::menuTree()->load('tools', new MenuTreeParameters());
|
||||
$this->assertEqual(1, count($menu_tree));
|
||||
/** @var \Drupal\Core\Menu\MenuLinkTreeElement $tree_element */
|
||||
$tree_element = reset($menu_tree);
|
||||
$this->assertTrue($tree_element->hasChildren);
|
||||
$this->assertEqual(1, count($tree_element->subtree));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue