function MenuLinksUnitTestCase::testMenuLinkRouterReparenting
Test automatic reparenting of menu links derived from menu routers.
File
-
modules/
simpletest/ tests/ menu.test, line 836
Class
- MenuLinksUnitTestCase
- Tests for menu links.
Code
function testMenuLinkRouterReparenting() {
// Run all the standard parenting tests on menu links derived from
// menu routers.
$this->testMenuLinkReparenting('system');
// Additionnaly, test reparenting based on path.
$links = $this->createLinkHierarchy('system');
// Move child-1-2 has a child of child-2, making the link hierarchy
// inconsistent with the path hierarchy.
$links['child-1-2']['plid'] = $links['child-2']['mlid'];
menu_link_save($links['child-1-2']);
// Check the new hierarchy.
$expected_hierarchy = array(
'parent' => FALSE,
'child-1' => 'parent',
'child-1-1' => 'child-1',
'child-2' => 'parent',
'child-1-2' => 'child-2',
);
$this->assertMenuLinkParents($links, $expected_hierarchy);
// Now delete 'parent' directly from the database, simulating a database
// crash. 'child-1' and 'child-2' should get moved to the
// top-level.
// Don't do that at home.
db_delete('menu_links')->condition('mlid', $links['parent']['mlid'])
->execute();
$expected_hierarchy = array(
'child-1' => FALSE,
'child-1-1' => 'child-1',
'child-2' => FALSE,
'child-1-2' => 'child-2',
);
$this->assertMenuLinkParents($links, $expected_hierarchy);
// Now delete 'child-2' directly from the database, simulating a database
// crash. 'child-1-2' will get reparented under 'child-1' based on its
// path.
// Don't do that at home.
db_delete('menu_links')->condition('mlid', $links['child-2']['mlid'])
->execute();
$expected_hierarchy = array(
'child-1' => FALSE,
'child-1-1' => 'child-1',
'child-1-2' => 'child-1',
);
$this->assertMenuLinkParents($links, $expected_hierarchy);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.