summaryrefslogtreecommitdiff
path: root/modules/poll/poll.test
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-06-23 19:15:07 +0000
committerDries Buytaert <dries@buytaert.net>2010-06-23 19:15:07 +0000
commit665a0c33b58f58cfc5eb67422b70dc5cf76b9e62 (patch)
tree9d3abef71c9ad6712155a85b31173b471f69fc10 /modules/poll/poll.test
parent12c2b192bdecbaf9db42d7081b54b22f25caf61a (diff)
downloadbrdo-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.test65
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