diff options
-rw-r--r-- | modules/poll/poll.module | 4 | ||||
-rw-r--r-- | modules/poll/poll.test | 36 |
2 files changed, 40 insertions, 0 deletions
diff --git a/modules/poll/poll.module b/modules/poll/poll.module index 01c6bcc80..2737c2bd8 100644 --- a/modules/poll/poll.module +++ b/modules/poll/poll.module @@ -594,6 +594,10 @@ function poll_update($node) { ->condition('nid', $node->nid) ->condition('chid', $key) ->execute(); + db_delete('poll_choice') + ->condition('nid', $node->nid) + ->condition('chid', $choice['chid']) + ->execute(); } } } diff --git a/modules/poll/poll.test b/modules/poll/poll.test index d6c4f4005..d7648a6ba 100644 --- a/modules/poll/poll.test +++ b/modules/poll/poll.test @@ -746,3 +746,39 @@ class PollExpirationTestCase extends PollTestCase { $this->assertTrue(isset($elements[0]) && !empty($elements[0]['checked']), t('Poll has expired.')); } } + +class PollDeleteChoiceTestCase extends PollTestCase { + public static function getInfo() { + return array( + 'name' => 'Poll choice deletion', + 'description' => 'Test the poll choice deletion logic.', + 'group' => 'Poll', + ); + } + + function setUp() { + parent::setUp('poll'); + } + + function testChoiceRemoval() { + // Set up a poll with three choices. + $title = $this->randomName(); + $choices = array('First choice', 'Second choice', 'Third choice'); + $poll_nid = $this->pollCreate($title, $choices, FALSE); + $this->assertTrue($poll_nid, t('Poll for choice deletion logic test created.')); + + // Edit the poll, and try to delete first poll choice. + $this->drupalGet("node/$poll_nid/edit"); + $edit['choice[chid:1][chtext]'] = ''; + $this->drupalPost(NULL, $edit, t('Save')); + + // Click on the poll title to go to node page. + $this->drupalGet('poll'); + $this->clickLink($title); + + // Check the first poll choice is deleted, while the others remain. + $this->assertNoText('First choice', t('First choice removed.')); + $this->assertText('Second choice', t('Second choice remains.')); + $this->assertText('Third choice', t('Third choice remains.')); + } +} |