View source
<?php
include_once drupal_get_path('module', 'webform') . '/webform.test';
class WebformClearSubmissionTestCase extends WebformTestCase {
public static function getInfo() {
return array(
'name' => t('Webform Clear - Submission tests'),
'description' => t('Submits sample webforms with different clear settings and checks the database integrity.'),
'group' => t('Webform Clear'),
);
}
function setUp() {
parent::setUp();
module_enable(array(
'webform_clear',
));
}
function tearDown() {
parent::tearDown();
}
function testWebformClear() {
$this
->drupalLogin($this->webform_users['admin']);
variable_set('webform_clear_default_time', WEBFORM_CLEAR_DO_NOT_DELETE);
$this
->webformReset();
list($submission_exists_before, $submission_exists_after) = $this
->webformSubmissionExecute(0);
$this
->assertTrue($submission_exists_before, 'Submission exists before cron (do not delete)');
$this
->assertTrue($submission_exists_after, 'Submission exists after cron (do not delete)');
variable_set('webform_clear_default_time', 0);
$this
->webformReset();
list($submission_exists_before, $submission_exists_after) = $this
->webformSubmissionExecute(0);
$this
->assertFalse($submission_exists_before, 'Submission does not exist before cron (delete immediately)');
$this
->assertFalse($submission_exists_after, 'Submission does not exist after cron (delete immediately)');
$this
->checkPermissions(array(
'set up webform_clear times',
), TRUE);
$role = $this
->drupalCreateRole(array(
'set up webform_clear times',
));
$this->webform_users['admin']->roles[$role] = $role;
user_save($this->webform_users['admin']);
$node = $this
->testWebformForm();
list($submission_exists_before, $submission_exists_after) = $this
->webformSubmissionExecute(0, WEBFORM_CLEAR_DO_NOT_DELETE);
$this
->assertTrue($submission_exists_before, 'Submission exists before cron (do not delete overriding default)');
$this
->assertTrue($submission_exists_after, 'Submission exists after cron (do not delete overriding default');
list($submission_exists_before, $submission_exists_after) = $this
->webformSubmissionExecute(0);
$this
->assertTrue($submission_exists_before, 'Submission still exists before cron (do not delete overriding default, second edit)');
$this
->assertTrue($submission_exists_after, 'Submission still exists before cron (do not delete overriding default, second edit)');
unset($this->webform_users['admin']->roles[$role]);
user_save($this->webform_users['admin']);
list($submission_exists_before, $submission_exists_after) = $this
->webformSubmissionExecute(0);
$this
->assertTrue($submission_exists_before, 'Submission still exists before cron (do not delete overriding default, no admin)');
$this
->assertTrue($submission_exists_after, 'Submission still exists before cron (do not delete overriding default, no admin)');
$this
->webformReset();
variable_set('webform_clear_default_time', 1 * 24 * 60 * 60);
list($submission_exists_before, $submission_exists_after) = $this
->webformSubmissionExecute(1 * 24 * 60 * 60);
$this
->assertTrue($submission_exists_before, 'Submission exists before cron (1 day)');
$this
->assertFalse($submission_exists_after, 'Submission does not exist after cron (1 day)');
$this
->webformReset();
variable_set('webform_clear_default_time', 1 * 24 * 60 * 60);
list($submission_exists_before, $submission_exists_after) = $this
->webformSubmissionExecute(60);
$this
->assertTrue($submission_exists_before, 'Submission exists before cron (1 day)');
$this
->assertTrue($submission_exists_after, 'Submission exists after cron (1 day, cron at 1 hour)');
}
function webformSubmissionExecute($add_time = 0, $override_clear_time = NULL) {
$path = drupal_get_path('module', 'webform');
module_load_include('inc', 'webform', 'includes/webform.submissions');
$node = $this
->testWebformForm();
$edit = array();
if (isset($override_clear_time)) {
$edit = array(
'clear_time' => $override_clear_time,
);
}
$this
->drupalPost('node/' . $node->nid . '/webform/configure', $edit, 'Save configuration');
$submission_values = array();
$this
->drupalGet('node/' . $node->nid, array(
'query' => array(
'foo' => 'bar',
),
));
$this
->drupalPost(NULL, $submission_values, 'Submit', array(), array(), 'webform-client-form-' . $node->nid);
$matches = array();
preg_match('/sid=([0-9]+)/', $this
->getUrl(), $matches);
$sid = $matches[1];
$submission_exists_before = !empty(webform_get_submission($node->nid, $sid, TRUE));
_webform_clear_current_time($add_time);
webform_clear_cron();
_webform_clear_current_time(0);
$submission_exists_after = !empty(webform_get_submission($node->nid, $sid, TRUE));
return array(
$submission_exists_before,
$submission_exists_after,
);
}
}