View source
<?php
namespace Drupal\little_helpers\Webform;
use Upal\DrupalUnitTestCase;
class RedirectTest extends DrupalUnitTestCase {
protected function submissionStub() {
$submission = (object) [
'nid' => 1,
'sid' => 2,
'data' => [],
'submitted' => NULL,
];
$node_array['nid'] = 1;
$node_array['webform'] = [
'components' => [],
'redirect_url' => '<confirmation>',
];
$submission = new Submission((object) $node_array, $submission);
$submissions =& drupal_static('webform_get_submission', []);
$submissions[$submission->sid] = $submission;
return $submission;
}
public function testGetRedirectWithAlterHook() {
$submission = $this
->submissionStub();
$redirect = $submission->webform
->getRedirect($submission);
unset($redirect[1]['query']['token']);
$this
->assertEqual([
'node/1/done',
[
'query' => [
'test' => 'foo',
'sid' => 2,
],
'fragment' => 'bar',
],
], $redirect);
}
public function testAlterRedirectAfterSubmit() {
$submission = $this
->submissionStub();
$form['#node'] = $submission->node;
$form_state['values']['details']['sid'] = 2;
$form_state['redirect'] = 'node/1/done';
$form_state['webform_completed'] = TRUE;
_little_helpers_webform_redirect_alter($form, $form_state);
$this
->assertEqual([
'node/1/done',
[
'query' => [
'test' => 'foo',
],
'fragment' => 'bar',
],
], $form_state['redirect']);
}
public function testAlterRedirectAfterConfirmationEmail() {
$submission = $this
->submissionStub();
$redirect = [
'path' => 'https://example.com?bar=baz#test',
'code' => 302,
'query' => [
'sid' => $submission->sid,
'confirm' => TRUE,
'token' => md5($submission->submitted . $submission->sid . drupal_get_private_key()),
],
];
little_helpers_webform_confirm_email_confirmation_redirect_alter($redirect, $submission->node, $submission);
$this
->assertEqual([
'path' => 'https://example.com',
'query' => [
'test' => 'foo',
'bar' => 'baz',
],
'fragment' => 'testbar',
'code' => 302,
], $redirect);
}
}