/** * Push a submenu in the last inserted menu. * * If no inserted menu, have same effect of pushMenu(). * * @see NavbarService::pushMenu() * * @param Menu $submenu * * @return NavbarService */ public function pushSubmenu(Menu $submenu) { if (!$this->lastmenu) { return $this->pushMenu($submenu); } $this->lastmenu->pushSubmenu($submenu); return $this; }
/** * 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()); }