summaryrefslogtreecommitdiff
path: root/modules/simpletest
diff options
context:
space:
mode:
Diffstat (limited to 'modules/simpletest')
-rw-r--r--modules/simpletest/tests/menu.test62
-rw-r--r--modules/simpletest/tests/menu_test.module68
2 files changed, 93 insertions, 37 deletions
diff --git a/modules/simpletest/tests/menu.test b/modules/simpletest/tests/menu.test
index f46b81df4..c25240e99 100644
--- a/modules/simpletest/tests/menu.test
+++ b/modules/simpletest/tests/menu.test
@@ -475,19 +475,61 @@ class MenuRouterTestCase extends DrupalWebTestCase {
}
/**
+ * Load the router for a given path.
+ */
+ protected function menuLoadRouter($router_path) {
+ return db_query('SELECT * FROM {menu_router} WHERE path = :path', array(':path' => $router_path))->fetchAssoc();
+ }
+
+ /**
* Tests inheritance of 'load arguments'.
*/
function testMenuLoadArgumentsInheritance() {
- $arg1 = $this->randomName();
- $arg2 = $this->randomName();
- $expected = print_r(array('%menu_test_argument' => $arg1, '%' => $arg2), TRUE);
-
- $this->drupalGet("menu-test/arguments/$arg1/$arg2");
- $this->assertRaw($expected, t('Inherited load arguments found.'));
- $this->drupalGet("menu-test/arguments/$arg1/$arg2/default");
- $this->assertRaw($expected, t('Inherited load arguments found.'));
- $this->drupalGet("menu-test/arguments/$arg1/$arg2/task");
- $this->assertRaw($expected, t('Inherited load arguments found.'));
+ $expected = array(
+ 'menu-test/arguments/%/%' => array(
+ 2 => array('menu_test_argument_load' => array(3)),
+ 3 => NULL,
+ ),
+ // Arguments are inherited to normal children.
+ 'menu-test/arguments/%/%/default' => array(
+ 2 => array('menu_test_argument_load' => array(3)),
+ 3 => NULL,
+ ),
+ // Arguments are inherited to tab children.
+ 'menu-test/arguments/%/%/task' => array(
+ 2 => array('menu_test_argument_load' => array(3)),
+ 3 => NULL,
+ ),
+ // Arguments are only inherited to the same loader functions.
+ 'menu-test/arguments/%/%/common-loader' => array(
+ 2 => array('menu_test_argument_load' => array(3)),
+ 3 => 'menu_test_other_argument_load',
+ ),
+ // Arguments are not inherited to children not using the same loader
+ // function.
+ 'menu-test/arguments/%/%/different-loaders-1' => array(
+ 2 => NULL,
+ 3 => 'menu_test_argument_load',
+ ),
+ 'menu-test/arguments/%/%/different-loaders-2' => array(
+ 2 => 'menu_test_other_argument_load',
+ 3 => NULL,
+ ),
+ 'menu-test/arguments/%/%/different-loaders-3' => array(
+ 2 => NULL,
+ 3 => NULL,
+ ),
+ // Explicit loader arguments should not be overriden by parent.
+ 'menu-test/arguments/%/%/explicit-arguments' => array(
+ 2 => array('menu_test_argument_load' => array()),
+ 3 => NULL,
+ ),
+ );
+
+ foreach ($expected as $router_path => $load_functions) {
+ $router_item = $this->menuLoadRouter($router_path);
+ $this->assertIdentical(unserialize($router_item['load_functions']), $load_functions, t('Expected load functions for router %router_path' , array('%router_path' => $router_path)));
+ }
}
}
diff --git a/modules/simpletest/tests/menu_test.module b/modules/simpletest/tests/menu_test.module
index 4d673e8af..65d5fdaf5 100644
--- a/modules/simpletest/tests/menu_test.module
+++ b/modules/simpletest/tests/menu_test.module
@@ -264,8 +264,7 @@ function menu_test_menu() {
$items['menu-test/arguments/%menu_test_argument/%'] = array(
'title' => 'Load arguments inheritance test',
'load arguments' => array(3),
- 'page callback' => 'menu_test_arguments',
- 'page arguments' => array(2),
+ 'page callback' => 'menu_test_callback',
'access callback' => TRUE,
);
$items['menu-test/arguments/%menu_test_argument/%/default'] = array(
@@ -274,44 +273,59 @@ function menu_test_menu() {
);
$items['menu-test/arguments/%menu_test_argument/%/task'] = array(
'title' => 'Local task',
- 'page callback' => 'menu_test_arguments',
- 'page arguments' => array(2),
+ 'page callback' => 'menu_test_callback',
+ 'access callback' => TRUE,
+ 'type' => MENU_LOCAL_TASK,
+ );
+ // For this path, load arguments should be inherited for the first loader only.
+ $items['menu-test/arguments/%menu_test_argument/%menu_test_other_argument/common-loader'] = array(
+ 'title' => 'Local task',
+ 'page callback' => 'menu_test_callback',
'access callback' => TRUE,
'type' => MENU_LOCAL_TASK,
);
+ // For these paths, no load arguments should be inherited.
+ // Not on the same position.
+ $items['menu-test/arguments/%/%menu_test_argument/different-loaders-1'] = array(
+ 'title' => 'An item not sharing the same loader',
+ 'page callback' => 'menu_test_callback',
+ 'access callback' => TRUE,
+ );
+ // Not the same loader.
+ $items['menu-test/arguments/%menu_test_other_argument/%/different-loaders-2'] = array(
+ 'title' => 'An item not sharing the same loader',
+ 'page callback' => 'menu_test_callback',
+ 'access callback' => TRUE,
+ );
+ // Not the same loader.
+ $items['menu-test/arguments/%/%/different-loaders-3'] = array(
+ 'title' => 'An item not sharing the same loader',
+ 'page callback' => 'menu_test_callback',
+ 'access callback' => TRUE,
+ );
+ // Explict load arguments should not be overriden (even if empty).
+ $items['menu-test/arguments/%menu_test_argument/%/explicit-arguments'] = array(
+ 'title' => 'An item defining explicit load arguments',
+ 'load arguments' => array(),
+ 'page callback' => 'menu_test_callback',
+ 'access callback' => TRUE,
+ );
return $items;
}
/**
- * Menu argument loader for the 'load arguments' inheritance test.
- *
- * @param $arg1
- * The path argument defined as %menu_test_argument.
- * @param $arg2
- * The additional path argument that should be passed due to 'load arguments'.
- *
- * @return
- * An array containing $arg1 and $arg2.
+ * Dummy argument loader for hook_menu() to point to.
*/
-function menu_test_argument_load($arg1, $arg2) {
- return array('%menu_test_argument' => $arg1, '%' => $arg2);
+function menu_test_argument_load($arg1) {
+ return FALSE;
}
/**
- * Page callback for the 'load arguments' inheritance test.
- *
- * @param $joined_args
- * An associative array containing the values for both path arguments, as
- * intercepted and processed by menu_test_argument_load():
- * - %menu_test_argument: The primary path argument string.
- * - %: The additional argument string.
- *
- * @return
- * A dump of the loaded %menu_test_argument argument.
+ * Dummy argument loader for hook_menu() to point to.
*/
-function menu_test_arguments($joined_args) {
- return print_r($joined_args, TRUE);
+function menu_test_other_argument_load($arg1) {
+ return FALSE;
}
/**