Commit 665a0c33 authored by Dries's avatar Dries

- Patch #295990 by mr.baileys, lilou: testingParty08: Poll autoexpire.

parent 12c2b192
......@@ -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'));
// 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() {
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->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.
$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.
$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();
->fields(array('created' => $created - ($poll_expiration * 1.01)))
->condition('nid', $poll_nid)
// Run cron and verify that the poll is now marked as "closed".
$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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment