diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-03-16 20:31:11 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-03-16 20:31:11 +0000 |
commit | 25c18d5dd04878afde8150d57099bdcb8933f1e5 (patch) | |
tree | 218d28e510cc848b1813b79c8bafd5a1a17faf1a | |
parent | f13422b6d3d90e9fb45881def65947a1d8032d7f (diff) | |
download | brdo-25c18d5dd04878afde8150d57099bdcb8933f1e5.tar.gz brdo-25c18d5dd04878afde8150d57099bdcb8933f1e5.tar.bz2 |
#403526 by pwolanin: Fix PDO exception when enabling a menu link.
-rw-r--r-- | modules/menu/menu.admin.inc | 3 | ||||
-rw-r--r-- | modules/menu/menu.test | 65 |
2 files changed, 52 insertions, 16 deletions
diff --git a/modules/menu/menu.admin.inc b/modules/menu/menu.admin.inc index 8a395c1cb..b12f78315 100644 --- a/modules/menu/menu.admin.inc +++ b/modules/menu/menu.admin.inc @@ -149,7 +149,8 @@ function menu_overview_form_submit($form, &$form_state) { } // Hidden is a special case, the value needs to be reversed. if ($element['hidden']['#value'] != $element['hidden']['#default_value']) { - $element['#item']['hidden'] = !$element['hidden']['#value']; + // Convert to integer rather than boolean due to PDO cast to string. + $element['#item']['hidden'] = $element['hidden']['#value'] ? 0 : 1; $updated_items[$mlid] = $element['#item']; } } diff --git a/modules/menu/menu.test b/modules/menu/menu.test index 88fb78881..654dad53d 100644 --- a/modules/menu/menu.test +++ b/modules/menu/menu.test @@ -154,6 +154,19 @@ class MenuTestCase extends DrupalWebTestCase { // Toggle menu links. $this->toggleMenuLink($item1); $this->toggleMenuLink($item2); + + // Enable a link via the overview form. + $this->disableMenuLink($item1); + $edit = array(); + + // Note in the UI the 'mlid:x[hidden]' form element maps to enabled, or + // NOT hidden. + $edit['mlid:' . $item1['mlid'] . '[hidden]'] = TRUE; + $this->drupalPost('admin/build/menu-customize/'. $item1['menu_name'], $edit, t('Save configuration')); + + // Verify in the database. + $hidden = db_result(db_query("SELECT hidden FROM {menu_links} WHERE mlid = :mlid", array('mlid' => $item1['mlid']))); + $this->assertEqual($hidden, 0, t('Link is not hidden in the database table when enabled via the overview form')); // Save menu links for later tests. $this->items[] = $item1; @@ -331,35 +344,57 @@ class MenuTestCase extends DrupalWebTestCase { /** * Alternately disable and enable a menu link. * - * @param array $item Menu link. + * @param $item + * Menu link. */ function toggleMenuLink($item) { - $mlid = $item['mlid']; - $title = $item['link_title']; + $this->disableMenuLink($item); - $edit = array(); + // Verify menu link is absent. + $this->drupalGet(''); + $this->assertNoText($item['link_title'], 'Menu link was not displayed'); + $this->enableMenuLink($item); + + // Verify menu link is displayed. + $this->drupalGet(''); + $this->assertText($item['link_title'], 'Menu link was displayed'); + } + + /** + * Disable a menu link. + * + * @param $item + * Menu link. + */ + function disableMenuLink($item) { + $mlid = $item['mlid']; $edit['menu[enabled]'] = FALSE; $this->drupalPost("admin/build/menu/item/$mlid/edit", $edit, t('Save')); - $this->assertResponse(200); - // Unlike most other modules, there is no confirmation message displayed. - // Verify menu link is absent. - $this->drupalGet(''); - $this->assertNoText($title, 'Menu link was not displayed'); + // Unlike most other modules, there is no confirmation message displayed. + // Verify in the database. + $hidden = db_result(db_query("SELECT hidden FROM {menu_links} WHERE mlid = :mlid", array('mlid' => $mlid))); + $this->assertEqual($hidden, 1, t('Link is hidden in the database table')); + } - // Edit menu link. + /** + * Enable a menu link. + * + * @param $item + * Menu link. + */ + function enableMenuLink($item) { + $mlid = $item['mlid']; $edit['menu[enabled]'] = TRUE; $this->drupalPost("admin/build/menu/item/$mlid/edit", $edit, t('Save')); - $this->assertResponse(200); - // Verify menu link is displayed. - $this->drupalGet(''); - $this->assertText($title, 'Menu link was displayed'); + // Verify in the database. + $hidden = db_result(db_query("SELECT hidden FROM {menu_links} WHERE mlid = :mlid", array('mlid' => $mlid))); + $this->assertEqual($hidden, 0, t('Link is not hidden in the database table')); } /** * Get standard menu link. - * */ private function getStandardMenuLink() { // Retrieve menu link id of the Log out menu link, which will always be on the front page. |