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)); } }