예제 #1
0
 /**
  * Tests addCondition().
  *
  * @covers ::addCondition
  */
 public function testAddCondition()
 {
     $parameters = new MenuTreeParameters();
     // Verify default value.
     $this->assertEquals(array(), $parameters->conditions);
     // Add a condition.
     $parameters->addCondition('expanded', 1);
     $this->assertEquals(array('expanded' => 1), $parameters->conditions);
     // Add another condition.
     $parameters->addCondition('has_children', 0);
     $this->assertEquals(array('expanded' => 1, 'has_children' => 0), $parameters->conditions);
     // Add a condition with an operator.
     $parameters->addCondition('provider', array('module1', 'module2'), 'IN');
     $this->assertEquals(array('expanded' => 1, 'has_children' => 0, 'provider' => array(array('module1', 'module2'), 'IN')), $parameters->conditions);
     // Add another condition with an operator.
     $parameters->addCondition('id', 1337, '<');
     $this->assertEquals(array('expanded' => 1, 'has_children' => 0, 'provider' => array(array('module1', 'module2'), 'IN'), 'id' => array(1337, '<')), $parameters->conditions);
     // It's impossible to add two conditions on the same field; in that case,
     // the old condition will be overwritten.
     $parameters->addCondition('provider', 'other_module');
     $this->assertEquals(array('expanded' => 1, 'has_children' => 0, 'provider' => 'other_module', 'id' => array(1337, '<')), $parameters->conditions);
 }
예제 #2
0
 /**
  * Tests the loadTreeData method.
  */
 public function testLoadTree()
 {
     $this->addMenuLink('test1', '');
     $this->addMenuLink('test2', 'test1');
     $this->addMenuLink('test3', 'test2');
     $this->addMenuLink('test4');
     $this->addMenuLink('test5', 'test4');
     $data = $this->treeStorage->loadTreeData('tools', new MenuTreeParameters());
     $tree = $data['tree'];
     $this->assertEqual(count($tree['test1']['subtree']), 1);
     $this->assertEqual(count($tree['test1']['subtree']['test2']['subtree']), 1);
     $this->assertEqual(count($tree['test1']['subtree']['test2']['subtree']['test3']['subtree']), 0);
     $this->assertEqual(count($tree['test4']['subtree']), 1);
     $this->assertEqual(count($tree['test4']['subtree']['test5']['subtree']), 0);
     $parameters = new MenuTreeParameters();
     $parameters->setActiveTrail(array('test4', 'test5'));
     $data = $this->treeStorage->loadTreeData('tools', $parameters);
     $tree = $data['tree'];
     $this->assertEqual(count($tree['test1']['subtree']), 1);
     $this->assertFalse($tree['test1']['in_active_trail']);
     $this->assertEqual(count($tree['test1']['subtree']['test2']['subtree']), 1);
     $this->assertFalse($tree['test1']['subtree']['test2']['in_active_trail']);
     $this->assertEqual(count($tree['test1']['subtree']['test2']['subtree']['test3']['subtree']), 0);
     $this->assertFalse($tree['test1']['subtree']['test2']['subtree']['test3']['in_active_trail']);
     $this->assertEqual(count($tree['test4']['subtree']), 1);
     $this->assertTrue($tree['test4']['in_active_trail']);
     $this->assertEqual(count($tree['test4']['subtree']['test5']['subtree']), 0);
     $this->assertTrue($tree['test4']['subtree']['test5']['in_active_trail']);
     // Add some conditions to ensure that conditions work as expected.
     $parameters = new MenuTreeParameters();
     $parameters->addCondition('parent', 'test1');
     $data = $this->treeStorage->loadTreeData('tools', $parameters);
     $this->assertEqual(count($data['tree']), 1);
     $this->assertEqual($data['tree']['test2']['definition']['id'], 'test2');
     $this->assertEqual($data['tree']['test2']['subtree'], []);
     // Test for only enabled links.
     $link = $this->treeStorage->load('test3');
     $link['enabled'] = FALSE;
     $this->treeStorage->save($link);
     $link = $this->treeStorage->load('test4');
     $link['enabled'] = FALSE;
     $this->treeStorage->save($link);
     $link = $this->treeStorage->load('test5');
     $link['enabled'] = FALSE;
     $this->treeStorage->save($link);
     $parameters = new MenuTreeParameters();
     $parameters->onlyEnabledLinks();
     $data = $this->treeStorage->loadTreeData('tools', $parameters);
     $this->assertEqual(count($data['tree']), 1);
     $this->assertEqual($data['tree']['test1']['definition']['id'], 'test1');
     $this->assertEqual(count($data['tree']['test1']['subtree']), 1);
     $this->assertEqual($data['tree']['test1']['subtree']['test2']['definition']['id'], 'test2');
     $this->assertEqual($data['tree']['test1']['subtree']['test2']['subtree'], []);
 }
예제 #3
0
 /**
  * Tests the regression in https://www.drupal.org/node/2532490.
  */
 public function testDefaultMenuTabRegression()
 {
     $this->container->get('module_installer')->install(['menu_ui', 'menu_link_content', 'toolbar', 'system']);
     $admin_user = $this->drupalCreateUser(['administer views', 'administer blocks', 'bypass node access', 'access user profiles', 'view all revisions', 'administer permissions', 'administer menu', 'link to any page', 'access toolbar']);
     $this->drupalLogin($admin_user);
     $edit = ['title[0][value]' => 'Menu title', 'link[0][uri]' => '/admin/foo', 'menu_parent' => 'admin:system.admin'];
     $this->drupalPostForm('admin/structure/menu/manage/admin/add', $edit, t('Save'));
     $menu_items = \Drupal::entityManager()->getStorage('menu_link_content')->getQuery()->sort('id', 'DESC')->pager(1)->execute();
     $menu_item = end($menu_items);
     /** @var \Drupal\menu_link_content\MenuLinkContentInterface $menu_link_content */
     $menu_link_content = MenuLinkContent::load($menu_item);
     $edit = [];
     $edit['label'] = $this->randomMachineName(16);
     $view_id = $edit['id'] = strtolower($this->randomMachineName(16));
     $edit['description'] = $this->randomMachineName(16);
     $edit['page[create]'] = TRUE;
     $edit['page[path]'] = 'admin/foo';
     $this->drupalPostForm('admin/structure/views/add', $edit, t('Save and edit'));
     $parameters = new MenuTreeParameters();
     $parameters->addCondition('id', $menu_link_content->getPluginId());
     $result = \Drupal::menuTree()->load('admin', $parameters);
     $plugin_definition = end($result)->link->getPluginDefinition();
     $this->assertEqual('view.' . $view_id . '.page_1', $plugin_definition['route_name']);
     $this->clickLink(t('No menu'));
     $this->drupalPostForm(NULL, ['menu[type]' => 'default tab', 'menu[title]' => 'Menu title'], t('Apply'));
     $this->assertText('Default tab options');
     $this->drupalPostForm(NULL, ['tab_options[type]' => 'normal', 'tab_options[title]' => 'Parent title'], t('Apply'));
     $this->drupalPostForm(NULL, [], t('Save'));
     // Assert that saving the view will not cause an exception.
     $this->assertResponse(200);
 }