public function WebformStatesRequiredJavaScriptTest::testRequiredState in Webform 8.5
Same name and namespace in other branches
- 6.x tests/src/FunctionalJavascript/States/WebformStatesRequiredJavaScriptTest.php \Drupal\Tests\webform\FunctionalJavascript\States\WebformStatesRequiredJavaScriptTest::testRequiredState()
Tests webform (custom) #states required logic.
File
- tests/
src/ FunctionalJavascript/ States/ WebformStatesRequiredJavaScriptTest.php, line 33
Class
- WebformStatesRequiredJavaScriptTest
- Tests for webform (custom) #states required logic.
Namespace
Drupal\Tests\webform\FunctionalJavascript\StatesCode
public function testRequiredState() {
// @todo Fix broken test on Drupal.org that working as expected locally.
$this
->assertTrue(TRUE);
return;
$session = $this
->getSession();
$page = $session
->getPage();
/**************************************************************************/
$this
->drupalGet('/webform/test_states_client_required');
// Check that all of the static radios are required.
$this
->assertCssSelect('#edit-radios-static-one[required]');
$this
->assertCssSelect('#edit-radios-static-two[required]');
$this
->assertCssSelect('#edit-radios-static-three[required]');
// Check that all of the static radios has required message.
$this
->assertCssSelect('#edit-radios-static-one[data-msg-required="radios_static field is required."]');
$this
->assertCssSelect('#edit-radios-static-two[data-msg-required="radios_static field is required."]');
$this
->assertCssSelect('#edit-radios-static-three[data-msg-required="radios_static field is required."]');
// Check that all of the static radios other are required.
$this
->assertCssSelect('#edit-radios-other-static-radios-one[required]');
$this
->assertCssSelect('#edit-radios-other-static-radios-two[required]');
$this
->assertCssSelect('#edit-radios-other-static-radios-three[required]');
// Check that only the first static checkbox is required.
$this
->assertCssSelect('#edit-checkboxes-static-one[required]');
$this
->assertNoCssSelect('#edit-checkboxes-static-two[required]');
$this
->assertNoCssSelect('#edit-checkboxes-static-three[required]');
// Check that only the first static checkboxes has require message.
$this
->assertCssSelect('#edit-checkboxes-static-one[data-msg-required="checkboxes_static field is required."]');
$this
->assertNoCssSelect('#edit-checkboxes-static-two[data-msg-required="checkboxes_static field is required."]');
$this
->assertNoCssSelect('#edit-checkboxes-static-three[data-msg-required="checkboxes_static field is required."]');
// Check that only the first static checkboxes is required.
$this
->assertCssSelect('#edit-checkboxes-other-static-checkboxes-one[required]');
$this
->assertNoCssSelect('#edit-checkboxes-other-static-checkboxes--two[required]');
$this
->assertNoCssSelect('#edit-checkboxes-other-static-checkboxes--three[required]');
// Check that file upload is not required.
$this
->assertNoCssSelect('#edit-managed-file-upload[required]');
// Check that radios and checkboxes fieldset wrapper is not required.
$this
->assertNoCssSelect('[data-drupal-selector="edit-radios"] .fieldset-legend.js-form-required.form-required');
$this
->assertNoCssSelect('[data-drupal-selector="edit-checkboxes"] .fieldset-legend.js-form-required.form-required');
// Check that none of the radios are required.
$this
->assertNoCssSelect('#edit-radios-one[required]');
$this
->assertNoCssSelect('#edit-radios-two[required]');
$this
->assertNoCssSelect('#edit-radios-three[required]');
// Check that none of the checkboxes are required.
$this
->assertNoCssSelect('#edit-checkboxes-one[required]');
$this
->assertNoCssSelect('#edit-checkboxes-two[required]');
$this
->assertNoCssSelect('#edit-checkboxes-three[required]');
// Check select other is not required.
$this
->assertNoCssSelect('#edit-select-other-select[required]');
// Trigger the required state for all elements.
$page
->checkField('trigger');
// Check that file upload is required.
$this
->assertCssSelect('#edit-managed-file-upload[required]');
// Check that radios and checkbox fieldset wrapper is required.
$this
->assertCssSelect('[data-drupal-selector="edit-radios"] .fieldset-legend.js-form-required.form-required');
$this
->assertCssSelect('[data-drupal-selector="edit-checkboxes"] .fieldset-legend.js-form-required.form-required');
// Check that all of the radios are required.
$this
->assertCssSelect('#edit-radios-one[required]');
$this
->assertCssSelect('#edit-radios-two[required]');
$this
->assertCssSelect('#edit-radios-three[required]');
// Check that all of the radios has required message.
$this
->assertCssSelect('#edit-radios-one[data-msg-required="radios field is required."]');
$this
->assertCssSelect('#edit-radios-two[data-msg-required="radios field is required."]');
$this
->assertCssSelect('#edit-radios-three[data-msg-required="radios field is required."]');
// Check that all of the radios other are required.
$this
->assertCssSelect('#edit-radios-other-radios-one[required]');
$this
->assertCssSelect('#edit-radios-other-radios-two[required]');
$this
->assertCssSelect('#edit-radios-other-radios-three[required]');
// Check that only the first checkbox is required.
$this
->assertCssSelect('#edit-checkboxes-one[required]');
$this
->assertNoCssSelect('#edit-checkboxes-two[required]');
$this
->assertNoCssSelect('#edit-checkboxes-three[required]');
// Check that only the first checkbox has require message.
$this
->assertCssSelect('#edit-checkboxes-one[data-msg-required="checkboxes field is required."]');
$this
->assertNoCssSelect('#edit-checkboxes-two[data-msg-required="checkboxes field is required."]');
$this
->assertNoCssSelect('#edit-checkboxes-three[data-msg-required="checkboxes field is required."]');
// Check that only the first checkbox other is required.
$this
->assertCssSelect('#edit-checkboxes-other-checkboxes-one[required]');
$this
->assertNoCssSelect('#edit-checkboxes-other-checkboxes-two[required]');
$this
->assertNoCssSelect('#edit-checkboxes-other-checkboxes-three[required]');
// Check select other is required.
$this
->assertCssSelect('#edit-select-other-select[required]');
// Check select other label without [for] attribute is required.
$this
->assertNoCssSelect('#edit-select-other-form-element > label[for]');
$this
->assertCssSelect('#edit-select-other-form-element > label.js-form-required.form-required');
// Check that fieldsets are never required.
$this
->assertNoCssSelect('fieldset#edit-fieldset[required]');
// Check checking the first checkbox removes the [required] attribute.
$page
->checkField('edit-checkboxes-one');
$this
->assertNoCssSelect('#edit-checkboxes-one[required]');
// Check unchecking the first checkbox restores the [required] attribute.
$page
->uncheckField('edit-checkboxes-one');
$this
->assertCssSelect('#edit-checkboxes-one[required]');
// Check checking the first checkbox removes the [required] attribute.
$page
->checkField('edit-checkboxes-two');
$this
->assertNoCssSelect('#edit-checkboxes-one[required]');
}