You are here

public function WebformWizardConditionalTest::testConditionalWizard in Webform 8.5

Same name and namespace in other branches
  1. 6.x tests/src/Functional/Wizard/WebformWizardConditionalTest.php \Drupal\Tests\webform\Functional\Wizard\WebformWizardConditionalTest::testConditionalWizard()

Test webform custom wizard.

File

tests/src/Functional/Wizard/WebformWizardConditionalTest.php, line 25

Class

WebformWizardConditionalTest
Tests for webform conditional wizard.

Namespace

Drupal\Tests\webform\Functional\Wizard

Code

public function testConditionalWizard() {
  $webform = Webform::load('test_form_wizard_conditional');
  $this
    ->drupalGet('/webform/test_form_wizard_conditional');

  // Check hiding page 1, 3, and 5.
  $edit = [
    'trigger_pages[page_1]' => FALSE,
    'trigger_pages[page_3]' => FALSE,
    'trigger_pages[page_5]' => FALSE,
  ];
  $this
    ->drupalPostForm('/webform/test_form_wizard_conditional', $edit, 'Next >');
  $this
    ->assertCurrentPage('Page 2', 'page_2');
  $this
    ->drupalPostForm(NULL, [], 'Next >');
  $this
    ->assertCurrentPage('Page 4', 'page_4');
  $this
    ->drupalPostForm(NULL, [], 'Submit');
  $this
    ->assertCurrentPage('Complete', WebformInterface::PAGE_CONFIRMATION);
  $sid = $this
    ->getLastSubmissionId($webform);
  $this
    ->assertNotEmpty($sid);

  // Check hiding all pages and skipping to complete.
  $edit = [
    'trigger_none' => TRUE,
  ];
  $this
    ->drupalPostForm('/webform/test_form_wizard_conditional', $edit, 'Next >');
  $this
    ->assertRaw('<div class="webform-progress">');
  $this
    ->assertRaw('New submission added to Test: Webform: Wizard conditional.');
  $this
    ->assertCurrentPage('Complete', WebformInterface::PAGE_CONFIRMATION);
  $sid = $this
    ->getLastSubmissionId($webform);
  $this
    ->assertNotEmpty($sid);

  // Enable preview.
  $webform
    ->setSetting('preview', 1);
  $webform
    ->save();

  // Check hiding all pages and skipping to preview.
  $edit = [
    'trigger_none' => TRUE,
  ];
  $this
    ->drupalPostForm('/webform/test_form_wizard_conditional', $edit, 'Next >');
  $this
    ->assertCurrentPage('Preview', WebformInterface::PAGE_PREVIEW);

  // Disable preview and include confirmation in progress page.
  $webform
    ->setSettings([
    'preview' => 0,
    'wizard_confirmation' => FALSE,
  ]);
  $webform
    ->save();

  // Check hiding all page with no preview or confirmation page included
  // in the progress bar still submits the form and then skips
  // to the confirmation page.
  $edit = [
    'trigger_none' => TRUE,
  ];
  $this
    ->drupalPostForm('/webform/test_form_wizard_conditional', $edit, 'Next >');
  $this
    ->assertNoRaw('<div class="webform-progress">');
  $this
    ->assertRaw('New submission added to Test: Webform: Wizard conditional.');
  $last_sid = $this
    ->getLastSubmissionId($webform);
  $this
    ->assertNotEqual($sid, $last_sid);

  // Enable wizard progress states.
  $webform
    ->setSetting('wizard_progress_states', 1);
  $webform
    ->save();
  $this
    ->drupalGet('/webform/test_form_wizard_conditional');

  // Check hiding page 3, and 5.
  $edit = [
    'trigger_pages[page_3]' => FALSE,
    'trigger_pages[page_5]' => FALSE,
  ];
  $this
    ->drupalPostForm('/webform/test_form_wizard_conditional', $edit, 'Next >');

  // Assert the progress bar no longer includes page 5.
  $this
    ->assertNoPattern('|<li data-webform-page="5" class="webform-progress-bar__page">\\s+<b>Page 5</b>|');
}