Index: modules/simpletest/tests/menu.test =================================================================== RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu.test,v retrieving revision 1.4 diff -u -p -r1.4 menu.test --- modules/simpletest/tests/menu.test 28 Dec 2008 18:27:14 -0000 1.4 +++ modules/simpletest/tests/menu.test 19 Jan 2009 20:01:12 -0000 @@ -38,6 +38,40 @@ class MenuIncTestCase extends DrupalWebT $name = db_result(db_query($sql)); $this->assertEqual($name, 'changed', t('Menu name was successfully changed after rebuild.')); } + + /** + * Tests the 4 possible ways to set the title for menu items mentioned in: + * http://drupal.org/node/140311 Also tests that menu item titles work + * with string overrides http://drupal.org/node/131061 + */ + function testMenuItemTitlesCases() { + + // Build array with string overrides + $test_data = array( + 1 => array('Example title - Case 1' => 'Alternative example title - Case 1'), + 2 => array('Example !sub1 - Case !op2' => 'Alternative example !sub1 - Case !op2'), + 3 => array('Example title' => 'Alternative example title'), + 4 => array('Example title' => 'Alternative example title'), + ); + + foreach ($test_data as $case_no => $override) { + $this->menuItemTitlesCasesHelper($case_no); + variable_set('locale_custom_strings_en', $override); + $this->menuItemTitlesCasesHelper($case_no, TRUE); + variable_set('locale_custom_strings_en', array()); + } + } + + /** + * Get a url and assert the title given a case number. If override is true, + * the title is asserted to begin with "Alternative" + */ + function menuItemTitlesCasesHelper($case_no, $override = FALSE) { + $this->drupalGet('menu_title_test/case'. $case_no); + $this->assertResponse(200); + $asserted_title = $override ? 'Alternative example title - Case '. $case_no : 'Example title - Case '. $case_no; + $this->assertTitle($asserted_title .' | Drupal', t('Menu title is') .': '. $asserted_title); + } } /** Index: modules/simpletest/tests/menu_test.module =================================================================== RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu_test.module,v retrieving revision 1.1 diff -u -p -r1.1 menu_test.module --- modules/simpletest/tests/menu_test.module 28 Dec 2008 18:27:14 -0000 1.1 +++ modules/simpletest/tests/menu_test.module 19 Jan 2009 20:01:12 -0000 @@ -7,14 +7,46 @@ */ /** - * The name of the menu changes during the course of this test. Use a $_GET. + * Implementation of hook_menu() */ function menu_test_menu() { - + // The name of this menu item changes during the course of this test. Use a $_GET. $items['menu_name_test'] = array( - 'title' => t('Test menu_name router item'), + 'title' => 'Test menu_name router item', 'page callback' => 'node_save', 'menu_name' => isset($_GET["hook_menu_name"]) ? $_GET["hook_menu_name"] : 'original', ); + + $items['menu_title_test/case1'] = array( + 'title' => 'Example title - Case 1', + 'access callback' => TRUE, + 'page callback' => 'user_page', + ); + $items['menu_title_test/case2'] = array( + 'title' => 'Example !sub1 - Case !op2', + // If '2' is not in quotes, the argument becomes arg(2) + 'title arguments' => array('!sub1' => 'title', '!op2' => '2'), + 'access callback' => TRUE, + 'page callback' => 'user_page', + ); + $items['menu_title_test/case3'] = array( + 'title' => 'Example title', + 'title callback' => 'menu_test_title_callback', + 'access callback' => TRUE, + 'page callback' => 'user_page', + ); + $items['menu_title_test/case4'] = array( + // Title gets completely ignored. Good thing, too. + 'title' => 'Bike sheds full of blue smurfs', + 'title callback' => 'menu_test_title_callback', + // If '4' is not in quotes, the argument becomes arg(4) + 'title arguments' => array('Example title', '4'), + 'access callback' => TRUE, + 'page callback' => 'user_page', + ); return $items; +} + +function menu_test_title_callback($title, $case_no = 3) { + return t($title) .' - Case '. $case_no; } \ No newline at end of file