/**
  * 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;
 }
Example #2
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());
 }