diff options
author | Dries Buytaert <dries@buytaert.net> | 2010-06-23 19:15:07 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2010-06-23 19:15:07 +0000 |
commit | 665a0c33b58f58cfc5eb67422b70dc5cf76b9e62 (patch) | |
tree | 9d3abef71c9ad6712155a85b31173b471f69fc10 /modules/poll/poll.test | |
parent | 12c2b192bdecbaf9db42d7081b54b22f25caf61a (diff) | |
download | brdo-665a0c33b58f58cfc5eb67422b70dc5cf76b9e62.tar.gz brdo-665a0c33b58f58cfc5eb67422b70dc5cf76b9e62.tar.bz2 |
- Patch #295990 by mr.baileys, lilou: testingParty08: Poll autoexpire.
Diffstat (limited to 'modules/poll/poll.test')
-rw-r--r-- | modules/poll/poll.test | 65 |
1 files changed, 64 insertions, 1 deletions
diff --git a/modules/poll/poll.test b/modules/poll/poll.test index 32ffd75bc..061646492 100644 --- a/modules/poll/poll.test +++ b/modules/poll/poll.test @@ -19,7 +19,7 @@ class PollTestCase extends DrupalWebTestCase { function pollCreate($title, $choices, $test_preview = TRUE) { $this->assertTrue(TRUE, 'Create a poll'); - $web_user = $this->drupalCreateUser(array('create poll content', 'access content')); + $web_user = $this->drupalCreateUser(array('create poll content', 'access content', 'edit own poll content')); $this->drupalLogin($web_user); // Get the form first to initialize the state of the internal browser @@ -578,3 +578,66 @@ class PollTokenReplaceTestCase extends PollTestCase { } } } + +class PollExpirationTestCase extends PollTestCase { + public static function getInfo() { + return array( + 'name' => 'Poll expiration', + 'description' => 'Test the poll auto-expiration logic.', + 'group' => 'Poll', + ); + } + + function setUp() { + parent::setUp('poll'); + } + + function testAutoExpire() { + // Set up a poll. + $title = $this->randomName(); + $choices = $this->_generateChoices(2); + $poll_nid = $this->pollCreate($title, $choices, FALSE); + $this->assertTrue($poll_nid, t('Poll for auto-expire test created.'), t('Poll')); + + // Visit the poll edit page and verify that by default, expiration + // is set to unlimited. + $this->drupalGet("node/$poll_nid/edit"); + $this->assertField('runtime', t('Poll expiration setting found.'), t('Poll')); + $elements = $this->xpath('//select[@id="edit-runtime"]/option[@selected="selected"]'); + $this->assertTrue(isset($elements[0]['value']) && $elements[0]['value'] == 0, t('Poll expiration set to unlimited.'), t('Poll')); + + // Set the expiration to one week. + $edit = array(); + $poll_expiration = 604800; // One week. + $edit['runtime'] = $poll_expiration; + $this->drupalPost(NULL, $edit, t('Save')); + $this->assertRaw(t('Poll %title has been updated.', array('%title' => $title)), t('Poll expiration settings saved.'), t('Poll')); + + // Make sure that the changed expiration settings is kept. + $this->drupalGet("node/$poll_nid/edit"); + $elements = $this->xpath('//select[@id="edit-runtime"]/option[@selected="selected"]'); + $this->assertTrue(isset($elements[0]['value']) && $elements[0]['value'] == $poll_expiration, t('Poll expiration set to unlimited.'), t('Poll')); + + // Force a cron run. Since the expiration date has not yet been reached, + // the poll should remain active. + drupal_cron_run(); + $this->drupalGet("node/$poll_nid/edit"); + $elements = $this->xpath('//input[@id="edit-active-1"]'); + $this->assertTrue(isset($elements[0]) && !empty($elements[0]['checked']), t('Poll is still active.'), t('Poll')); + + // Test expiration. Since REQUEST_TIME is a constant and we don't + // want to keep SimpleTest waiting until the moment of expiration arrives, + // we forcibly change the expiration date in the database. + $created = db_query('SELECT created FROM {node} WHERE nid = :nid', array(':nid' => $poll_nid))->fetchField(); + db_update('node') + ->fields(array('created' => $created - ($poll_expiration * 1.01))) + ->condition('nid', $poll_nid) + ->execute(); + + // Run cron and verify that the poll is now marked as "closed". + drupal_cron_run(); + $this->drupalGet("node/$poll_nid/edit"); + $elements = $this->xpath('//input[@id="edit-active-0"]'); + $this->assertTrue(isset($elements[0]) && !empty($elements[0]['checked']), t('Poll has expired.'), t('Poll')); + } +}
\ No newline at end of file |