public function WebformStatesWizardTest::testFormStatesValidatorWizard in Webform 6.x
Same name and namespace in other branches
- 8.5 tests/src/Functional/States/WebformStatesWizardTest.php \Drupal\Tests\webform\Functional\States\WebformStatesWizardTest::testFormStatesValidatorWizard()
Tests webform submission conditions (#states) validator wizard cross-page conditions.
File
- tests/
src/ Functional/ States/ WebformStatesWizardTest.php, line 27
Class
- WebformStatesWizardTest
- Tests for webform states wizard server.
Namespace
Drupal\Tests\webform\Functional\StatesCode
public function testFormStatesValidatorWizard() {
$webform = Webform::load('test_states_server_wizard');
/**************************************************************************/
// Go to default #states for page 02 with trigger-checkbox unchecked.
$this
->postSubmission($webform, [], 'Next >');
$this
->assertRaw("page_01_trigger_checkbox: 0\npage_01_textfield_required: '{default_value}'\npage_01_textfield_optional: '{default_value}'\npage_01_textfield_disabled: ''\npage_01_textfield_enabled: ''\npage_01_textfield_visible: ''\npage_01_textfield_invisible: ''\npage_01_checkbox_checked: 0\npage_01_checkbox_unchecked: 0\npage_02_textfield_required: '{default_value}'\npage_02_textfield_optional: '{default_value}'\npage_02_textfield_disabled: ''\npage_02_textfield_enabled: ''\npage_02_textfield_visible: '{default_value}'\npage_02_textfield_visible_slide: '{default_value}'\npage_02_textfield_invisible: '{default_value}'\npage_02_textfield_invisible_slide: '{default_value}'\npage_02_checkbox_checked: 0\npage_02_checkbox_unchecked: 0\npage_03_textfield_required: '{default_value}'\npage_01_trigger_checkbox_computed: 'No'");
// Check trigger-checkbox value is No.
$this
->assertFieldByName('page_01_trigger_checkbox_computed', 'No');
// Check page_02_textfield_required is not required.
$this
->assertNoCssSelect('[name="page_02_textfield_required"][required]');
// Check page_02_textfield_optional is required.
$this
->assertCssSelect('[name="page_02_textfield_optional"][required]');
// Check page_02_textfield_disabled is not disabled.
$this
->assertNoCssSelect('[name="page_02_textfield_disabled"][disabled]');
// Check page_02_textfield_enabled is disabled.
$this
->assertCssSelect('[name="page_02_textfield_enabled"][disabled]');
// Check page_02_textfield_visible is hidden via .js-webform-states-hidden.
$this
->assertCssSelect('.form-item-page-02-textfield-visible.js-webform-states-hidden');
// Check page_02_textfield_visible_slide is hidden via .js-webform-states-hidden.
$this
->assertCssSelect('.form-item-page-02-textfield-visible-slide.js-webform-states-hidden');
// Check page_02_textfield_invisible is visible.
$this
->assertFieldByName('page_02_textfield_invisible', '{default_value}');
// Check page_02_textfield_invisible_slide is visible.
$this
->assertFieldByName('page_02_textfield_invisible_slide', '{default_value}');
// Check page_02_checkbox_checked is not checked.
$this
->assertNoFieldChecked('page_02_checkbox_checked');
// Check page_02_checkbox_unchecked is checked.
$this
->assertFieldChecked('page_02_checkbox_unchecked');
// Check page_02_details_expanded is not open.
$this
->assertCssSelect('details[id="edit-page-02-details-expanded"]');
$this
->assertNoCssSelect('details[id="edit-page-02-details-expanded"][open]');
// Check page_02_details_collapsed is open.
$this
->assertCssSelect('details[id="edit-page-02-details-collapsed"][open]');
// Check submission data.
$this
->drupalPostForm(NULL, [], 'Submit');
$this
->assertRaw("page_01_trigger_checkbox: 0\npage_01_textfield_required: '{default_value}'\npage_01_textfield_optional: '{default_value}'\npage_01_textfield_disabled: ''\npage_01_textfield_enabled: ''\npage_01_textfield_visible: ''\npage_01_textfield_invisible: ''\npage_01_checkbox_checked: 0\npage_01_checkbox_unchecked: 0\npage_02_textfield_required: '{default_value}'\npage_02_textfield_optional: '{default_value}'\npage_02_textfield_disabled: ''\npage_02_textfield_enabled: ''\npage_02_textfield_visible: ''\npage_02_textfield_visible_slide: ''\npage_02_textfield_invisible: '{default_value}'\npage_02_textfield_invisible_slide: '{default_value}'\npage_02_checkbox_checked: 0\npage_02_checkbox_unchecked: 1\npage_03_textfield_required: ''\npage_01_trigger_checkbox_computed: 'No'");
/**************************************************************************/
// Go to default #states for page 02 with trigger_checkbox checked.
$this
->postSubmission($webform, [
'page_01_trigger_checkbox' => TRUE,
], 'Next >');
$this
->assertRaw("page_01_trigger_checkbox: 1\npage_01_textfield_required: '{default_value}'\npage_01_textfield_optional: '{default_value}'\npage_01_textfield_disabled: ''\npage_01_textfield_enabled: ''\npage_01_textfield_visible: ''\npage_01_textfield_invisible: ''\npage_01_checkbox_checked: 0\npage_01_checkbox_unchecked: 0\npage_02_textfield_required: '{default_value}'\npage_02_textfield_optional: '{default_value}'\npage_02_textfield_disabled: ''\npage_02_textfield_enabled: ''\npage_02_textfield_visible: '{default_value}'\npage_02_textfield_visible_slide: '{default_value}'\npage_02_textfield_invisible: '{default_value}'\npage_02_textfield_invisible_slide: '{default_value}'\npage_02_checkbox_checked: 0\npage_02_checkbox_unchecked: 0\npage_03_textfield_required: '{default_value}'\npage_01_trigger_checkbox_computed: 'Yes'");
// Check trigger-checkbox value is Yes.
$this
->assertCssSelect('[name="page_01_trigger_checkbox_computed"][value="Yes"]');
// Check page_02_textfield_required is required.
$this
->assertCssSelect('[name="page_02_textfield_required"][required]');
// Check page_02_textfield_optional is not required.
$this
->assertNoCssSelect('[name="page_02_textfield_optional"][required]');
// Check page_02_textfield_disabled is disabled.
$this
->assertCssSelect('[name="page_02_textfield_disabled"][disabled="disabled"]');
// Check page_02_textfield_enabled is not disabled.
$this
->assertNoCssSelect('[name="page_02_textfield_enabled"][disabled="disabled"]');
// Check page_02_textfield_visible is visible.
$this
->assertFieldByName('page_02_textfield_visible', '{default_value}');
// Check page_02_textfield_visible_slide is visible.
$this
->assertFieldByName('page_02_textfield_visible_slide', '{default_value}');
// Check page_02_textfield_invisible is hidden with no default value.
$this
->assertCssSelect('.form-item-page-02-textfield-invisible.js-webform-states-hidden');
$this
->assertNoFieldByName('page_02_textfield_invisible', '{default_value}');
$this
->assertFieldByName('page_02_textfield_invisible', '');
// Check page_02_textfield_invisible_slides is hidden with no default value.
$this
->assertCssSelect('.form-item-page-02-textfield-invisible-slide.js-webform-states-hidden');
$this
->assertNoFieldByName('page_02_textfield_invisible_slide', '{default_value}');
$this
->assertFieldByName('page_02_textfield_invisible_slide', '');
// Check page_02_checkbox_checked is checked.
$this
->assertFieldChecked('page_02_checkbox_checked');
// Check page_02_checkbox_unchecked is not checked.
$this
->assertNoFieldChecked('page_02_checkbox_unchecked');
// Check page_02_details_expanded is open.
$this
->assertCssSelect('details[id="edit-page-02-details-expanded"][open]');
// Check page_02_details_collapsed is not open.
$this
->assertNoCssSelect('details[id="edit-page-02-details-collapsed"][open]');
// Check third page data.
$this
->drupalPostForm(NULL, [], 'Next >');
$this
->assertRaw("page_01_trigger_checkbox: 1\npage_01_textfield_required: '{default_value}'\npage_01_textfield_optional: '{default_value}'\npage_01_textfield_disabled: ''\npage_01_textfield_enabled: ''\npage_01_textfield_visible: ''\npage_01_textfield_invisible: ''\npage_01_checkbox_checked: 0\npage_01_checkbox_unchecked: 0\npage_02_textfield_required: '{default_value}'\npage_02_textfield_optional: '{default_value}'\npage_02_textfield_disabled: ''\npage_02_textfield_enabled: ''\npage_02_textfield_visible: '{default_value}'\npage_02_textfield_visible_slide: '{default_value}'\npage_02_textfield_invisible: ''\npage_02_textfield_invisible_slide: ''\npage_02_checkbox_checked: 1\npage_02_checkbox_unchecked: 0\npage_03_textfield_required: '{default_value}'\npage_01_trigger_checkbox_computed: 'Yes'");
// Check submission data.
$this
->drupalPostForm(NULL, [], 'Submit');
$this
->assertRaw("page_01_trigger_checkbox: 1\npage_01_textfield_required: '{default_value}'\npage_01_textfield_optional: '{default_value}'\npage_01_textfield_disabled: ''\npage_01_textfield_enabled: ''\npage_01_textfield_visible: ''\npage_01_textfield_invisible: ''\npage_01_checkbox_checked: 0\npage_01_checkbox_unchecked: 0\npage_02_textfield_required: '{default_value}'\npage_02_textfield_optional: '{default_value}'\npage_02_textfield_disabled: ''\npage_02_textfield_enabled: ''\npage_02_textfield_visible: '{default_value}'\npage_02_textfield_visible_slide: '{default_value}'\npage_02_textfield_invisible: ''\npage_02_textfield_invisible_slide: ''\npage_02_checkbox_checked: 1\npage_02_checkbox_unchecked: 0\npage_03_textfield_required: '{default_value}'\npage_01_trigger_checkbox_computed: 'Yes'");
}