function MenuRouterTest::testMenuHidden

Tests menu link depth and parents of local tasks and menu callbacks.

File

drupal/core/modules/system/lib/Drupal/system/Tests/Menu/MenuRouterTest.php, line 366
Definition of Drupal\system\Tests\Menu\MenuRouterTest.

Class

MenuRouterTest
Tests menu router and hook_menu() functionality.

Namespace

Drupal\system\Tests\Menu

Code

function testMenuHidden() {

  // Verify links for one dynamic argument.
  $query = \Drupal::entityQuery('menu_link')
    ->condition('router_path', 'menu-test/hidden/menu', 'STARTS_WITH')
    ->sort('router_path');
  $result = $query
    ->execute();
  $menu_links = menu_link_load_multiple($result);
  $links = array();
  foreach ($menu_links as $menu_link) {
    $links[$menu_link->router_path] = $menu_link;
  }
  $parent = $links['menu-test/hidden/menu'];
  $depth = $parent['depth'] + 1;
  $plid = $parent['mlid'];
  $link = $links['menu-test/hidden/menu/list'];
  $this
    ->assertEqual($link['depth'], $depth, format_string('%path depth @link_depth is equal to @depth.', array(
    '%path' => $link['router_path'],
    '@link_depth' => $link['depth'],
    '@depth' => $depth,
  )));
  $this
    ->assertEqual($link['plid'], $plid, format_string('%path plid @link_plid is equal to @plid.', array(
    '%path' => $link['router_path'],
    '@link_plid' => $link['plid'],
    '@plid' => $plid,
  )));
  $link = $links['menu-test/hidden/menu/add'];
  $this
    ->assertEqual($link['depth'], $depth, format_string('%path depth @link_depth is equal to @depth.', array(
    '%path' => $link['router_path'],
    '@link_depth' => $link['depth'],
    '@depth' => $depth,
  )));
  $this
    ->assertEqual($link['plid'], $plid, format_string('%path plid @link_plid is equal to @plid.', array(
    '%path' => $link['router_path'],
    '@link_plid' => $link['plid'],
    '@plid' => $plid,
  )));
  $link = $links['menu-test/hidden/menu/settings'];
  $this
    ->assertEqual($link['depth'], $depth, format_string('%path depth @link_depth is equal to @depth.', array(
    '%path' => $link['router_path'],
    '@link_depth' => $link['depth'],
    '@depth' => $depth,
  )));
  $this
    ->assertEqual($link['plid'], $plid, format_string('%path plid @link_plid is equal to @plid.', array(
    '%path' => $link['router_path'],
    '@link_plid' => $link['plid'],
    '@plid' => $plid,
  )));
  $link = $links['menu-test/hidden/menu/manage/%'];
  $this
    ->assertEqual($link['depth'], $depth, format_string('%path depth @link_depth is equal to @depth.', array(
    '%path' => $link['router_path'],
    '@link_depth' => $link['depth'],
    '@depth' => $depth,
  )));
  $this
    ->assertEqual($link['plid'], $plid, format_string('%path plid @link_plid is equal to @plid.', array(
    '%path' => $link['router_path'],
    '@link_plid' => $link['plid'],
    '@plid' => $plid,
  )));
  $parent = $links['menu-test/hidden/menu/manage/%'];
  $depth = $parent['depth'] + 1;
  $plid = $parent['mlid'];
  $link = $links['menu-test/hidden/menu/manage/%/list'];
  $this
    ->assertEqual($link['depth'], $depth, format_string('%path depth @link_depth is equal to @depth.', array(
    '%path' => $link['router_path'],
    '@link_depth' => $link['depth'],
    '@depth' => $depth,
  )));
  $this
    ->assertEqual($link['plid'], $plid, format_string('%path plid @link_plid is equal to @plid.', array(
    '%path' => $link['router_path'],
    '@link_plid' => $link['plid'],
    '@plid' => $plid,
  )));
  $link = $links['menu-test/hidden/menu/manage/%/add'];
  $this
    ->assertEqual($link['depth'], $depth, format_string('%path depth @link_depth is equal to @depth.', array(
    '%path' => $link['router_path'],
    '@link_depth' => $link['depth'],
    '@depth' => $depth,
  )));
  $this
    ->assertEqual($link['plid'], $plid, format_string('%path plid @link_plid is equal to @plid.', array(
    '%path' => $link['router_path'],
    '@link_plid' => $link['plid'],
    '@plid' => $plid,
  )));
  $link = $links['menu-test/hidden/menu/manage/%/edit'];
  $this
    ->assertEqual($link['depth'], $depth, format_string('%path depth @link_depth is equal to @depth.', array(
    '%path' => $link['router_path'],
    '@link_depth' => $link['depth'],
    '@depth' => $depth,
  )));
  $this
    ->assertEqual($link['plid'], $plid, format_string('%path plid @link_plid is equal to @plid.', array(
    '%path' => $link['router_path'],
    '@link_plid' => $link['plid'],
    '@plid' => $plid,
  )));
  $link = $links['menu-test/hidden/menu/manage/%/delete'];
  $this
    ->assertEqual($link['depth'], $depth, format_string('%path depth @link_depth is equal to @depth.', array(
    '%path' => $link['router_path'],
    '@link_depth' => $link['depth'],
    '@depth' => $depth,
  )));
  $this
    ->assertEqual($link['plid'], $plid, format_string('%path plid @link_plid is equal to @plid.', array(
    '%path' => $link['router_path'],
    '@link_plid' => $link['plid'],
    '@plid' => $plid,
  )));

  // Verify links for two dynamic arguments.
  $query = \Drupal::entityQuery('menu_link')
    ->condition('router_path', 'menu-test/hidden/block', 'STARTS_WITH')
    ->sort('router_path');
  $result = $query
    ->execute();
  $menu_links = menu_link_load_multiple($result);
  $links = array();
  foreach ($menu_links as $menu_link) {
    $links[$menu_link->router_path] = $menu_link;
  }
  $parent = $links['menu-test/hidden/block'];
  $depth = $parent['depth'] + 1;
  $plid = $parent['mlid'];
  $link = $links['menu-test/hidden/block/list'];
  $this
    ->assertEqual($link['depth'], $depth, format_string('%path depth @link_depth is equal to @depth.', array(
    '%path' => $link['router_path'],
    '@link_depth' => $link['depth'],
    '@depth' => $depth,
  )));
  $this
    ->assertEqual($link['plid'], $plid, format_string('%path plid @link_plid is equal to @plid.', array(
    '%path' => $link['router_path'],
    '@link_plid' => $link['plid'],
    '@plid' => $plid,
  )));
  $link = $links['menu-test/hidden/block/add'];
  $this
    ->assertEqual($link['depth'], $depth, format_string('%path depth @link_depth is equal to @depth.', array(
    '%path' => $link['router_path'],
    '@link_depth' => $link['depth'],
    '@depth' => $depth,
  )));
  $this
    ->assertEqual($link['plid'], $plid, format_string('%path plid @link_plid is equal to @plid.', array(
    '%path' => $link['router_path'],
    '@link_plid' => $link['plid'],
    '@plid' => $plid,
  )));
  $link = $links['menu-test/hidden/block/manage/%/%'];
  $this
    ->assertEqual($link['depth'], $depth, format_string('%path depth @link_depth is equal to @depth.', array(
    '%path' => $link['router_path'],
    '@link_depth' => $link['depth'],
    '@depth' => $depth,
  )));
  $this
    ->assertEqual($link['plid'], $plid, format_string('%path plid @link_plid is equal to @plid.', array(
    '%path' => $link['router_path'],
    '@link_plid' => $link['plid'],
    '@plid' => $plid,
  )));
  $parent = $links['menu-test/hidden/block/manage/%/%'];
  $depth = $parent['depth'] + 1;
  $plid = $parent['mlid'];
  $link = $links['menu-test/hidden/block/manage/%/%/configure'];
  $this
    ->assertEqual($link['depth'], $depth, format_string('%path depth @link_depth is equal to @depth.', array(
    '%path' => $link['router_path'],
    '@link_depth' => $link['depth'],
    '@depth' => $depth,
  )));
  $this
    ->assertEqual($link['plid'], $plid, format_string('%path plid @link_plid is equal to @plid.', array(
    '%path' => $link['router_path'],
    '@link_plid' => $link['plid'],
    '@plid' => $plid,
  )));
  $link = $links['menu-test/hidden/block/manage/%/%/delete'];
  $this
    ->assertEqual($link['depth'], $depth, format_string('%path depth @link_depth is equal to @depth.', array(
    '%path' => $link['router_path'],
    '@link_depth' => $link['depth'],
    '@depth' => $depth,
  )));
  $this
    ->assertEqual($link['plid'], $plid, format_string('%path plid @link_plid is equal to @plid.', array(
    '%path' => $link['router_path'],
    '@link_plid' => $link['plid'],
    '@plid' => $plid,
  )));
}