$manager = $configuration->getPluginConfiguration('ioDoctrineMenuPlugin')->getMenuManager();
$cacheKey = md5('Root li');
Doctrine_Query::create()->from('ioDoctrineMenuItem')->delete()->execute();
$arr = create_doctrine_test_tree($t);
$rt = $arr['rt'];
$t->info('  5.1 - Retrieve the menu through the menu manager, it should set the cache.');
$menu = $manager->getMenu('Root li');
$t->is($manager->getCacheDriver()->has($cacheKey), true, 'Retrieving the menu sets the cache on the manager');
$t->info('  5.2 - Change the root node and save, see that the cache cleared.');
$rt->setLabel('Changed label');
$rt->save();
$t->is($manager->getCacheDriver()->has($cacheKey), false, 'The cache is now unset.');
$t->info('  5.3 - Re-put the cache, modify a child element, and see that the cache clears.');
$menu = $manager->getMenu('Root li');
$t->is($manager->getCacheDriver()->has($cacheKey), true, 'Retrieving the menu sets the cache on the manager');
$children = $rt->getNode()->getChildren();
$children[0]->setRoute('http://www.doctrine-project.org');
$children[0]->save();
$t->is($manager->getCacheDriver()->has($cacheKey), false, 'The cache is now unset.');
$t->info('6 - Test restoreTreeFromNestedArray()');
$tbl->createQuery()->delete()->execute();
$arr = create_doctrine_test_tree($t);
extract($arr);
$newOrder = get_nested_set_save_array($arr);
$newOrder = $newOrder['items'];
$tbl->restoreTreeFromNestedArray($newOrder, $rt);
root_sanity_check($t, $rt);
check_child_ordering($t, $rt, array(), array('Parent 2', 'Parent 1'));
check_child_ordering($t, $rt, array(0), array('Child 4'));
check_child_ordering($t, $rt, array(1), array('Child 3', 'Child 1', 'Child 2'));
コード例 #2
0
$t->is($ch4Count, null, 'The ch4 menu item was deleted entirely.');
$t->is($gc1Count, null, 'The gc1 menu item was deleted entirely.');
$t->info('    2.5.5 - Add a new child (ch6) to pt2.');
$menu['Parent 2']->addChild('Child 6');
persist_menu($t, $rt, $menu);
$t->info('  Check the integrity of the tree.');
test_total_nodes($t, array(0 => 1, 1 => 2, 2 => 4, 3 => 0));
root_sanity_check($t, $rt);
check_child_ordering($t, $rt, array(1), array('Child 6'));
$t->info('    2.5.6 - Add a pt3 under root after pt2');
$menu->addChild('Parent 3', 'http://www.doctrine-project.org');
persist_menu($t, $rt, $menu);
$t->info('  Check the integrity of the tree.');
test_total_nodes($t, array(0 => 1, 1 => 3, 2 => 4, 3 => 0));
root_sanity_check($t, $rt);
check_child_ordering($t, $rt, array(), array('Parent 1', 'Parent 2', 'Parent 3'));
$t->info('3 - Test createMenu() to create a new ioMenuItem tree from the database.');
// clear out the data
Doctrine_Query::create()->from('ioDoctrineMenuItem')->delete()->execute();
Doctrine_Query::create()->from('sfGuardPermission')->delete()->execute();
// create the tree and make its vars accessible
extract(create_doctrine_test_tree($t));
print_test_tree($t);
$t->info('  3.1 - Adding some Permissions for testing');
$c1 = new sfGuardPermission();
$c1->name = 'c1';
$c1->save();
$c2 = new sfGuardPermission();
$c2->name = 'c2';
$c2->save();
$rt->link('Permissions', array($c1->id, $c2->id));
コード例 #3
0
<?php

require_once dirname(__FILE__) . '/../bootstrap/functional.php';
require_once sfConfig::get('sf_lib_dir') . '/test/unitHelper.php';
$browser = new sfTestFunctional(new sfBrowser());
$arr = create_doctrine_test_tree($browser->test());
$rt = $arr['rt'];
$browser->info('1 - Goto the reorder page and look around')->info('  1.1 - Goto the reorder page with a fake name sends to a 404')->get('/test/menu/reorder/fake')->with('request')->begin()->isParameter('module', 'io_doctrine_menu')->isParameter('action', 'reorder')->end()->with('response')->begin()->isStatusCode(404)->end()->info('  1.2 - Goto a real menu reordering page')->get('/test/menu/reorder/' . $rt->id)->with('request')->begin()->isParameter('module', 'io_doctrine_menu')->isParameter('action', 'reorder')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', '/Reorder Menu "Root li"/')->info('  1.3 - check for the correct nested set javascript urls')->matches('/loadUrl:\\ \'\\/index\\.php\\/test\\/menu\\/reorder\\/json\\/' . $rt->id . '/')->matches('/saveUrl:\\ \'\\/index\\.php\\/test\\/menu\\/reorder\\/save\\/' . $rt->id . '/')->end();
$browser->info('2 - Check out the json response for the menu')->get('/test/menu/reorder/json/' . $rt->id)->with('request')->begin()->isParameter('module', 'io_doctrine_menu')->isParameter('action', 'json')->isParameter('sf_format', 'json')->end()->with('response')->begin()->isStatusCode(200)->end();
$response = $browser->getResponse()->getContent();
$json = json_decode($response);
$browser->test()->isnt($json, null, 'The response returns a valid json object');
$browser->info('3 - Test the save method')->call('/test/menu/reorder/save/' . $rt->id, 'post', array('nested-sortable-widget' => get_nested_set_save_array($arr)))->with('request')->begin()->isParameter('module', 'io_doctrine_menu')->isParameter('action', 'saveJson')->end()->with('response')->begin()->isStatusCode(200)->end();
$browser->info('  3.1 - Check the menu to see that it was updated');
root_sanity_check($browser->test(), $rt);
check_child_ordering($browser->test(), $rt, array(), array('Parent 2', 'Parent 1'));
check_child_ordering($browser->test(), $rt, array(0), array('Child 4'));
check_child_ordering($browser->test(), $rt, array(1), array('Child 3', 'Child 1', 'Child 2'));