public function executeBigMenu(sfWebRequest $request) { // setup a menu with a variety of conditions difficult to test in unit tests $menu = new ioMenuItem('Root li', null, array('class' => 'root')); $pt1 = $menu->addChild('Parent 1', 'homepage'); $ch1 = $pt1->addChild('Child 1', '/parent1/ch1'); $ch2 = $pt1->addChild('Child 2', '/parent1/ch2'); $ch3 = $pt1->addChild('Child 3', '/parent1/ch3'); $pt2 = $menu->addChild('Parent 2'); $ch4 = $pt2->addChild('Child 4'); $gc1 = $ch4->addChild('Grandchild 1'); // setup ch4 to be the current menu $ch4->setRoute('@test_menu'); // setup ch3 to be hidden since we won't be authenticated $ch3->requiresAuth(true); // setup pt1 and ch1 to render absolutely, in two different ways $pt1->setUrlOptions(array('absolute' => true)); $ch1->setLinkOptions(array('absolute' => true, 'query_string' => 'test=1')); $this->menu = $menu; $this->setLayout(false); }
// create the tree and make the variables available extract(create_test_tree($t, 'ioMenuItemTest')); $t->info('10 - Test copy'); check_test_tree($t, $menu); print_test_tree($t); // print the test tree $menu2 = $menu->copy(); $t->ok($menu2 !== $menu, 'menu2 is another instance then menu'); $t->ok($menu2['Parent 1'] !== $menu['Parent 1'], 'menu2->pt1 is another instance than menu->pt1'); $t->ok($menu2['Parent 1']['Child 2'] !== $menu['Parent 1']['Child 2'], 'menu2->pt1->ch2 is another instance than menu->pt1->ch2'); $t->ok($menu2['Parent 1']['Child 2']->getParent() === $menu2['Parent 1'], 'menu2->pt1->ch2->parent is same instance as menu2->pt1'); $t->ok($menu2['Parent 1']->getParent() === $menu2, 'menu2->pt1->parent is same instance as menu2'); //$t->ok($menu2['Parent 1']->getParent() !== $menu['Parent 1'], 'menu2->pt1->ch2->parent is same instance as menu->pt1'); $t->info('11 - Test slice'); $menu = new ioMenuItem('root'); $menu->addChild('c1'); $menu['c1']->addChild('gc1'); $menu['c1']->addChild('gc2'); $menu->addChild('c2'); $menu->addChild('c3'); $menu->addChild('c4'); $menu2 = $menu->slice(0, 3); $t->is(array_keys($menu2->getChildren()), array('c1', 'c2', 'c3'), 'slice 0, 3'); $menu2 = $menu->slice(0, "c3"); $t->is(array_keys($menu2->getChildren()), array('c1', 'c2', 'c3'), 'slice 0, c3'); $menu2 = $menu->slice("c1", "c3"); $t->is(array_keys($menu2->getChildren()), array('c1', 'c2', 'c3'), 'slice c1, c3'); $menu2 = $menu->slice($menu['c1'], $menu['c3']); $t->is(array_keys($menu2->getChildren()), array('c1', 'c2', 'c3'), 'slice c1, c3'); $menu2 = $menu->slice(1, 2); $t->is(array_keys($menu2->getChildren()), array('c2', 'c3'), 'slice 1, 2');