Example #1
0
 /**
  * Test submenu system
  *
  * @cover Menu::__construct()
  * @cover Menu::getSubmenu()
  * @cover Menu::setSubmenu()
  * @cover Menu::pushSubmenu()
  */
 public function testSubmenu()
 {
     $menu = new Menu();
     $this->assertEquals(array(), $menu->getSubmenu());
     $submenu = array(new Menu('Submenu ' . uniqid(), 'http://' . uniqid() . '.example.com'), new Menu('Submenu ' . uniqid(), 'http://' . uniqid() . '.example.com'), new Menu('Submenu ' . uniqid(), 'http://' . uniqid() . '.example.com', array(new Menu('Sub-Submenu ' . uniqid(), 'http://' . uniqid() . '.example.com'), new Menu('Sub-Submenu ' . uniqid(), 'http://' . uniqid() . '.example.com'))));
     $menu = new Menu('Main menu', null, $submenu);
     $menu_submenu = $menu->getSubmenu();
     $this->assertEquals(count($submenu), count($menu_submenu));
     foreach ($submenu as $k => $menu) {
         $this->assertEquals($menu->getTitle(), $menu_submenu[$k]->getTitle());
         $this->assertEquals($menu->getLink(), $menu_submenu[$k]->getLink());
         $this->assertEquals($menu->getSubmenu(), $menu_submenu[$k]->getSubmenu());
         $submenu_submenu = $menu_submenu[$k]->getSubmenu();
         foreach ($menu->getSubmenu() as $l => $smenu) {
             $this->assertEquals($smenu->getTitle(), $submenu_submenu[$l]->getTitle());
             $this->assertEquals($smenu->getLink(), $submenu_submenu[$l]->getLink());
             $this->assertEquals($smenu->getSubmenu(), $submenu_submenu[$l]->getSubmenu());
         }
     }
     $menu = new Menu('Main menu', null);
     $submenu = array(new Menu('Submenu ' . uniqid(), 'http://' . uniqid() . '.example.com'), new Menu('Submenu ' . uniqid(), 'http://' . uniqid() . '.example.com', array(new Menu('Sub-Submenu ' . uniqid(), 'http://' . uniqid() . '.example.com'))), new Menu('Submenu ' . uniqid(), 'http://' . uniqid() . '.example.com'), new Menu('Submenu ' . uniqid(), 'http://' . uniqid() . '.example.com'));
     $submenu_count = 0;
     foreach ($submenu as $smenu) {
         $this->assertEquals($submenu_count, count($menu->getSubmenu()));
         $menu->pushSubmenu($smenu);
         $this->assertEquals(++$submenu_count, count($menu->getSubmenu()));
     }
     $this->assertEquals(count($submenu), count($menu->getSubmenu()));
     $this->assertEquals($submenu, $menu->getSubmenu());
 }
 /**
  * Test the configuration reader.
  *
  * @cover NavbarService::parseConfiguration()
  * @cover NavbarService::parseMenuConfiguration()
  * @cover NavbarService::parseNavbarListConfiguration()
  * @cover NavbarService::parseNavbarConfiguration()
  */
 public function testConfigurationReader()
 {
     $navbarService = new NavbarService();
     $configuration = self::getConfigurationExample();
     $navbarService->parseConfiguration($configuration);
     $this->assertEquals(2, count($navbarService->getNavbars()));
     foreach ($configuration['menu']['_menus'] as $navbar_cfg) {
         $navbar = $navbarService->getNavbar($navbar_cfg['index']);
         $this->assertTrue($navbar instanceof Navbar);
         $menus_flat = array();
         foreach ($navbar_cfg['content'] as $menu_cfg) {
             $menu = new Menu();
             $menu->setTitle($menu_cfg['title']);
             $menu->setLink($menu_cfg['route']);
             $menus_flat[$menu_cfg['id']] = $menu;
         }
         $menu_list = array();
         foreach ($navbar_cfg['content'] as $menu_cfg) {
             if ($menu_cfg['parent_id'] > 0) {
                 $menus_flat[$menu_cfg['parent_id']]->pushSubmenu($menus_flat[$menu_cfg['id']]);
             } else {
                 $menu_list[] = $menus_flat[$menu_cfg['id']];
             }
         }
         $this->assertEquals($menu_list, $navbar->getMenuList());
     }
     // Test with url generator
     $navbarService = new NavbarService($this->urlGenerator);
     $tstFakeRoot = 'test-route-' . uniqid();
     $navbarService->parseConfiguration(array('menu' => array('_menus' => array(array('index' => 'test', 'content' => array(array('id' => 1, 'parent_id' => 0, 'title' => 'test menu 1 1 ' . uniqid(), 'route' => 'bootstrap-bundle-test-route'), array('id' => 2, 'parent_id' => 0, 'title' => 'test menu 1 2 ' . uniqid(), 'route' => $tstFakeRoot)))))));
     $navbar = $navbarService->getNavbar('test');
     $menuList = $navbar->getMenuList();
     $this->assertEquals('/this/is/a/test', $menuList[0]->getLink());
     $this->assertEquals($tstFakeRoot, $menuList[1]->getLink());
 }
 /**
  * Read one menu configuration and convert it into a menu.
  *
  * @param array $menu_cfg
  * @return Menu
  */
 protected function parseMenuConfiguration(array $menu_cfg)
 {
     $menu = new Menu($this->urlGenerator);
     $menu->setTitle($menu_cfg['title']);
     try {
         $menu->setLink($this->urlGenerator ? $this->urlGenerator->generate($menu_cfg['route']) : $menu_cfg['route']);
     } catch (RouteNotFoundException $e) {
         $menu->setLink($menu_cfg['route']);
     }
     return $menu;
 }