You are here

function LinksTest::testMenuLinkReparenting in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/menu_link_content/src/Tests/LinksTest.php \Drupal\menu_link_content\Tests\LinksTest::testMenuLinkReparenting()

Test automatic reparenting of menu links.

File

core/modules/menu_link_content/src/Tests/LinksTest.php, line 149
Contains \Drupal\menu_link_content\Tests\LinksTest.

Class

LinksTest
Tests handling of menu links hierarchies.

Namespace

Drupal\menu_link_content\Tests

Code

function testMenuLinkReparenting($module = 'menu_test') {

  // Check the initial hierarchy.
  $links = $this
    ->createLinkHierarchy($module);
  $expected_hierarchy = array(
    'parent' => '',
    'child-1' => 'parent',
    'child-1-1' => 'child-1',
    'child-1-2' => 'child-1',
    'child-2' => 'parent',
  );
  $this
    ->assertMenuLinkParents($links, $expected_hierarchy);

  // Start over, and move child-1 under child-2, and check that all the
  // children of child-1 have been moved too.
  $links = $this
    ->createLinkHierarchy($module);

  /* @var \Drupal\Core\Menu\MenuLinkInterface $menu_link_plugin  */
  $this->menuLinkManager
    ->updateDefinition($links['child-1'], array(
    'parent' => $links['child-2'],
  ));

  // Verify that the entity was updated too.
  $menu_link_plugin = $this->menuLinkManager
    ->createInstance($links['child-1']);
  $entity = \Drupal::entityManager()
    ->loadEntityByUuid('menu_link_content', $menu_link_plugin
    ->getDerivativeId());
  $this
    ->assertEqual($entity
    ->getParentId(), $links['child-2']);
  $expected_hierarchy = array(
    'parent' => '',
    'child-1' => 'child-2',
    'child-1-1' => 'child-1',
    'child-1-2' => 'child-1',
    'child-2' => 'parent',
  );
  $this
    ->assertMenuLinkParents($links, $expected_hierarchy);

  // Start over, and delete child-1, and check that the children of child-1
  // have been reassigned to the parent.
  $links = $this
    ->createLinkHierarchy($module);
  $this->menuLinkManager
    ->removeDefinition($links['child-1']);
  $expected_hierarchy = array(
    'parent' => FALSE,
    'child-1-1' => 'parent',
    'child-1-2' => 'parent',
    'child-2' => 'parent',
  );
  $this
    ->assertMenuLinkParents($links, $expected_hierarchy);

  // @todo Figure out what makes sense to test in terms of automatic
  //   re-parenting. https://www.drupal.org/node/2309531
}