From 585aa50e6a2d7d8f67f8116c207a342c47728dfb Mon Sep 17 00:00:00 2001 From: Angie Byron <webchick@24967.no-reply.drupal.org> Date: Wed, 28 Jan 2009 01:09:58 +0000 Subject: [PATCH] #346156 by stBorchert, swentel, and catch: Fix deletion of terms (with tests). --- modules/forum/forum.admin.inc | 2 +- modules/forum/forum.test | 19 +++++++++++++++++++ modules/taxonomy/taxonomy.admin.inc | 2 +- modules/taxonomy/taxonomy.module | 4 ++-- modules/taxonomy/taxonomy.test | 12 ++++++++++-- 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/modules/forum/forum.admin.inc b/modules/forum/forum.admin.inc index ce1618fca65d..c758ef442002 100644 --- a/modules/forum/forum.admin.inc +++ b/modules/forum/forum.admin.inc @@ -173,7 +173,7 @@ function forum_confirm_delete(&$form_state, $tid) { * Implementation of forms api _submit call. Deletes a forum after confirmation. */ function forum_confirm_delete_submit($form, &$form_state) { - taxonomy_del_term($form_state['values']['tid']); + taxonomy_term_delete($form_state['values']['tid']); drupal_set_message(t('The forum %term and all sub-forums have been deleted.', array('%term' => $form_state['values']['name']))); watchdog('content', 'forum: deleted %term and all its sub-forums.', array('%term' => $form_state['values']['name'])); diff --git a/modules/forum/forum.test b/modules/forum/forum.test index b8e9136c0486..95f0ccbfe7d0 100644 --- a/modules/forum/forum.test +++ b/modules/forum/forum.test @@ -103,6 +103,10 @@ class ForumTestCase extends DrupalWebTestCase { $this->container = $this->createForum('container'); // Create forum inside the forum container. $this->forum = $this->createForum('forum', $this->container['tid']); + // Create second forum in container. + $this->delete_forum = $this->createForum('forum', $this->container['tid']); + // Delete this second form. + $this->deleteForum($this->delete_forum['tid']); // Create forum at the top (root) level. $this->root_forum = $this->createForum('forum'); } @@ -181,6 +185,21 @@ class ForumTestCase extends DrupalWebTestCase { return $term; } + /** + * Delete a forum. + * + * @param integer $tid Forum id. + */ + function deleteForum($tid) { + // Delete the forum id. + $this->drupalPost('admin/build/forum/edit/forum/'. $tid, array(), t('Delete')); + $this->drupalPost(NULL, NULL, t('Delete')); + + // Assert that the forum no longer exists. + $this->drupalGet('forum/'. $tid); + $this->assertRaw(t('No forums defined'), 'The forum was not found'); + } + /** * Run basic tests on the indicated user. * diff --git a/modules/taxonomy/taxonomy.admin.inc b/modules/taxonomy/taxonomy.admin.inc index 3ba26135e005..3d9bd50929c9 100644 --- a/modules/taxonomy/taxonomy.admin.inc +++ b/modules/taxonomy/taxonomy.admin.inc @@ -837,7 +837,7 @@ function taxonomy_term_confirm_delete(&$form_state, $tid) { * @see taxonomy_term_confirm_delete() */ function taxonomy_term_confirm_delete_submit($form, &$form_state) { - taxonomy_del_term($form_state['values']['tid']); + taxonomy_term_delete($form_state['values']['tid']); taxonomy_check_vocabulary_hierarchy($form['#vocabulary'], $form_state['values']); drupal_set_message(t('Deleted term %name.', array('%name' => $form_state['values']['name']))); watchdog('taxonomy', 'Deleted term %name.', array('%name' => $form_state['values']['name']), WATCHDOG_NOTICE); diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module index 4e25c3bd8aac..b28e0a30603c 100644 --- a/modules/taxonomy/taxonomy.module +++ b/modules/taxonomy/taxonomy.module @@ -765,8 +765,8 @@ function taxonomy_get_parents($tid, $key = 'tid') { */ function taxonomy_get_parents_all($tid) { $parents = array(); - if ($tid) { - $parents[] = taxonomy_term_load($tid); + if ($term = taxonomy_term_load($tid)) { + $parents[] = $term; $n = 0; while ($parent = taxonomy_get_parents($parents[$n]->tid)) { $parents = array_merge($parents, $parent); diff --git a/modules/taxonomy/taxonomy.test b/modules/taxonomy/taxonomy.test index 0047e36ab608..b4ab8880c6dd 100644 --- a/modules/taxonomy/taxonomy.test +++ b/modules/taxonomy/taxonomy.test @@ -390,9 +390,9 @@ class TaxonomyTermTestCase extends TaxonomyWebTestCase { } /** - * Save and edit a term and assert that the name and description are correct. + * Save, edit and delete a term using the user interface. */ - function testTermEdit() { + function testTermInterface() { $edit = array( 'name' => $this->randomName(12), 'description' => $this->randomName(100), @@ -431,6 +431,14 @@ class TaxonomyTermTestCase extends TaxonomyWebTestCase { $this->drupalGet('taxonomy/term/' . $term[0]->tid); $this->assertText($edit['name'], t('The randomly generated term name is present.')); $this->assertText($edit['description'], t('The randomly generated term description is present.')); + + // Delete the term. + $this->drupalPost('taxonomy/term/' . $term[0]->tid . '/edit', array(), t('Delete')); + $this->drupalPost(NULL, NULL, t('Delete')); + + // Assert that the term no longer exists. + $this->drupalGet('taxonomy/term/' . $term[0]->tid); + $this->assertResponse(404, t('The taxonomy term page was not found')); } } -- GitLab