Пример #1
0
 /**
  * Test automatic reparenting of menu links.
  */
 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);
     // Try changing the parent at the entity level.
     $definition = $this->menuLinkManager->getDefinition($links['child-1-2']);
     $entity = MenuLinkContent::load($definition['metadata']['entity_id']);
     $entity->parent->value = '';
     $entity->save();
     $expected_hierarchy = array('parent' => '', 'child-1-1' => 'parent', 'child-1-2' => '', '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
 }
Пример #2
0
 /**
  * Test views internal menu link options.
  */
 public function testMenuLinkOverrides()
 {
     // Link from views module.
     $views_link = $this->menuLinkManager->getDefinition('views_view:views.test_page_display_menu.page_3');
     $this->assertTrue($views_link['enabled'], 'Menu link is enabled.');
     $this->assertFalse($views_link['expanded'], 'Menu link is not expanded.');
     $views_link['enabled'] = 0;
     $views_link['expanded'] = 1;
     $this->menuLinkManager->updateDefinition($views_link['id'], $views_link);
     $views_link = $this->menuLinkManager->getDefinition($views_link['id']);
     $this->assertFalse($views_link['enabled'], 'Menu link is disabled.');
     $this->assertTrue($views_link['expanded'], 'Menu link is expanded.');
     $this->menuLinkManager->rebuild();
     $this->assertFalse($views_link['enabled'], 'Menu link is disabled.');
     $this->assertTrue($views_link['expanded'], 'Menu link is expanded.');
     // Link from user module.
     $user_link = $this->menuLinkManager->getDefinition('user.page');
     $this->assertTrue($user_link['enabled'], 'Menu link is enabled.');
     $user_link['enabled'] = 0;
     $views_link['expanded'] = 1;
     $this->menuLinkManager->updateDefinition($user_link['id'], $user_link);
     $this->assertFalse($user_link['enabled'], 'Menu link is disabled.');
     $this->menuLinkManager->rebuild();
     $this->assertFalse($user_link['enabled'], 'Menu link is disabled.');
     $this->menuLinkOverrides->reload();
     $views_link = $this->menuLinkManager->getDefinition('views_view:views.test_page_display_menu.page_3');
     $this->assertFalse($views_link['enabled'], 'Menu link is disabled.');
     $this->assertTrue($views_link['expanded'], 'Menu link is expanded.');
     $user_link = $this->menuLinkManager->getDefinition('user.page');
     $this->assertFalse($user_link['enabled'], 'Menu link is disabled.');
 }