Beispiel #1
0
 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');