Index: modules/simpletest/tests/menu.test =================================================================== RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu.test,v retrieving revision 1.6 diff -u -p -r1.6 menu.test --- modules/simpletest/tests/menu.test 5 Feb 2009 01:05:17 -0000 1.6 +++ modules/simpletest/tests/menu.test 7 Mar 2009 21:58:36 -0000 @@ -47,6 +47,39 @@ class MenuIncTestCase extends DrupalWebT $name = db_result(db_query($sql)); $this->assertEqual($name, 'changed', t('Menu name was successfully changed after rebuild.')); } + + /** + * Tests the possible ways to set the title for menu items + * Also tests that menu item titles work with string overrides. + */ + 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" + */ + private 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, 'Menu'); + } } /** Index: modules/simpletest/tests/menu_test.module =================================================================== RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu_test.module,v retrieving revision 1.2 diff -u -p -r1.2 menu_test.module --- modules/simpletest/tests/menu_test.module 5 Feb 2009 01:05:17 -0000 1.2 +++ modules/simpletest/tests/menu_test.module 7 Mar 2009 21:58:36 -0000 @@ -24,6 +24,35 @@ function menu_test_menu() { 'page callback' => 'menu_test_callback', 'access arguments' => array('access content'), ); + + $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; } @@ -36,3 +65,13 @@ function menu_test_menu() { function menu_test_callback() { return $this->randomName(); } + +/** + * Concatenates a string, by using the t function and a case number. + * + * @param $title Title string. + * @param $case_number The current case number which is tests. Defaults to 3 + */ +function menu_test_title_callback($title, $case_no = 3) { + return t($title) . ' - Case ' . $case_no; +}