? menu_rebuild_3.patch
? menu_rebuild_7.patch
? reset.php
? sites/default/files
? sites/default/settings.php
Index: modules/simpletest/tests/menu.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu.test,v
retrieving revision 1.2
diff -u -p -r1.2 menu.test
--- modules/simpletest/tests/menu.test	15 Sep 2008 20:48:09 -0000	1.2
+++ modules/simpletest/tests/menu.test	19 Nov 2008 01:57:19 -0000
@@ -7,9 +7,6 @@
  */
 
 class MenuIncTestCase extends DrupalWebTestCase {
-  /**
-   * Implementation of getInfo().
-   */
   function getInfo() {
     return array(
       'name' => t('Hook menu tests'),
@@ -18,9 +15,6 @@ class MenuIncTestCase extends DrupalWebT
     );
   }
 
-  /**
-   * Implementation of setUp().
-   */
   function setUp() {
     // Enable dummy module that implements hook_menu.
     parent::setUp('hook_menu');
@@ -45,3 +39,42 @@ class MenuIncTestCase extends DrupalWebT
     $this->assertEqual($name, 'changed', t('Menu name was successfully changed after rebuild.'));
   }
 }
+
+/**
+ * Tests rebuilding the menu by setting 'menu_rebuild_needed.'
+ */
+class MenuRebuildTestCase extends DrupalWebTestCase {
+  function getInfo() {
+    return array(
+      'name' => t('Menu rebuild test'),
+      'description' => t('Test rebuilding of menu.'),
+      'group' => t('Menu'),
+    );
+  }
+  
+  /**
+   * Test if the 'menu_rebuild_needed' variable triggers a menu_rebuild() call.
+   */
+  function testMenuRebuildByVariable() {
+    // Check if 'admin' path exists.
+    $admin_exists = db_result(db_query("SELECT path from {menu_router} WHERE path='admin'"));
+    $this->assertEqual($admin_exists, 'admin', t("The path 'admin/' exists prior to deleting."));
+
+    // Delete the path item 'admin', and test that the path doesn't exist in the database.
+    $delete =  db_delete('menu_router')
+      ->condition('path', 'admin')
+      ->execute();
+
+    $admin_exists = db_result(db_query("SELECT path from {menu_router} WHERE path='admin'"));
+    $this->assertFalse($admin_exists, t("The path 'admin/' has been deleted and doesn't exist in the database."));
+
+    // Now we enable the rebuild variable and trigger menu_execute_active_handler()
+    // to rebuild the menu item. Now 'admin' should exist.
+    variable_set('menu_rebuild_needed', TRUE);
+    // menu_execute_active_handler() should trigger the rebuild.
+    $this->drupalGet('<front>');
+    $admin_exists = db_result(db_query("SELECT path from {menu_router} WHERE path='admin'"));
+    $this->assertEqual($admin_exists, 'admin', t("The menu has been rebuilt, the path 'admin' now exists again."));
+  }
+  
+}
\ No newline at end of file
