public function testAdvancedMenuHandling() { // Populate from CMS Classes, check for existance of SecurityAdmin CMSMenu::clear_menu(); CMSMenu::populate_menu(); $menuItem = CMSMenu::get_menu_item('SecurityAdmin'); $this->assertType('CMSMenuItem', $menuItem, 'SecurityAdmin menu item exists'); $this->assertEquals($menuItem->url, singleton('SecurityAdmin')->Link(), 'Menu item has the correct link'); $this->assertEquals($menuItem->controller, 'SecurityAdmin', 'Menu item has the correct controller class'); $this->assertEquals( $menuItem->priority, singleton('SecurityAdmin')->stat('menu_priority'), 'Menu item has the correct priority' ); // Check that menu order is correct by priority // Note this will break if populate_menu includes normal links (ie, as not controller) $menuItems = CMSMenu::get_menu_items(); $priority = 9999; // ok, *could* be set larger, but shouldn't need to be! foreach($menuItems as $menuItem) { $this->assertEquals( $menuItem->priority, singleton($menuItem->controller)->stat('menu_priority'), "Menu item $menuItem->title has the correct priority" ); $this->assertLessThanOrEqual($priority, $menuItem->priority, 'Menu item is of lower or equal priority'); } }