function MenuUiTest::checkInvalidParentMenuLinks

Same name and namespace in other branches
  1. 9 core/modules/menu_ui/tests/src/Functional/MenuUiTest.php \Drupal\Tests\menu_ui\Functional\MenuUiTest::checkInvalidParentMenuLinks()
  2. 10 core/modules/menu_ui/tests/src/Functional/MenuUiTest.php \Drupal\Tests\menu_ui\Functional\MenuUiTest::checkInvalidParentMenuLinks()
  3. 11.x core/modules/menu_ui/tests/src/Functional/MenuUiTest.php \Drupal\Tests\menu_ui\Functional\MenuUiTest::checkInvalidParentMenuLinks()

Tests that parent options are limited by depth when adding menu links.

1 call to MenuUiTest::checkInvalidParentMenuLinks()
MenuUiTest::doMenuTests in core/modules/menu_ui/tests/src/Functional/MenuUiTest.php
Tests menu functionality.

File

core/modules/menu_ui/tests/src/Functional/MenuUiTest.php, line 658

Class

MenuUiTest
Add a custom menu, add menu links to the custom menu and Tools menu, check their data, and delete them using the UI.

Namespace

Drupal\Tests\menu_ui\Functional

Code

public function checkInvalidParentMenuLinks() {
    $last_link = NULL;
    $created_links = [];
    // Get the max depth of the tree.
    $menu_link_tree = \Drupal::service('menu.link_tree');
    $max_depth = $menu_link_tree->maxDepth();
    // Create a maximum number of menu links, each a child of the previous.
    for ($i = 0; $i <= $max_depth - 1; $i++) {
        $parent = $last_link ? 'tools:' . $last_link->getPluginId() : 'tools:';
        $title = 'title' . $i;
        $edit = [
            'link[0][uri]' => '/',
            'title[0][value]' => $title,
            'menu_parent' => $parent,
            'description[0][value]' => '',
            'enabled[value]' => 1,
            'expanded[value]' => FALSE,
            'weight[0][value]' => '0',
        ];
        $this->drupalPostForm("admin/structure/menu/manage/{$this->menu->id()}/add", $edit, t('Save'));
        $menu_links = \Drupal::entityTypeManager()->getStorage('menu_link_content')
            ->loadByProperties([
            'title' => $title,
        ]);
        $last_link = reset($menu_links);
        $created_links[] = 'tools:' . $last_link->getPluginId();
    }
    // The last link cannot be a parent in the new menu link form.
    $this->drupalGet('admin/structure/menu/manage/admin/add');
    $value = 'tools:' . $last_link->getPluginId();
    $this->assertNoOption('edit-menu-parent', $value, 'The invalid option is not there.');
    // All but the last link can be parents in the new menu link form.
    array_pop($created_links);
    foreach ($created_links as $key => $link) {
        $this->assertOption('edit-menu-parent', $link, 'The valid option number ' . ($key + 1) . ' is there.');
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.