diff --git a/core/modules/menu_link_content/src/Tests/MenuLinkContentDeriverTest.php b/core/modules/menu_link_content/src/Tests/MenuLinkContentDeriverTest.php
index b7238f8cbb5b..5cd51086ba08 100644
--- a/core/modules/menu_link_content/src/Tests/MenuLinkContentDeriverTest.php
+++ b/core/modules/menu_link_content/src/Tests/MenuLinkContentDeriverTest.php
@@ -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' => '',
'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('', $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));
}
}