You are here

public function WebformElementButtonsTest::testBuildingOtherElements in Webform 8.5

Same name and namespace in other branches
  1. 6.x modules/webform_jqueryui_buttons/tests/src/Functional/WebformElementButtonsTest.php \Drupal\Tests\webform_jqueryui_buttons\Functional\WebformElementButtonsTest::testBuildingOtherElements()

Tests buttons elements.

File

modules/webform_jqueryui_buttons/tests/src/Functional/WebformElementButtonsTest.php, line 24

Class

WebformElementButtonsTest
Tests for webform element buttons.

Namespace

Drupal\Tests\webform_jqueryui_buttons\Functional

Code

public function testBuildingOtherElements() {
  $this
    ->drupalGet('/webform/test_element_buttons');

  // Check basic buttons_other.
  $this
    ->assertRaw('<span class="fieldset-legend">buttons_other_basic</span>');
  $this
    ->assertRaw('<input data-drupal-selector="edit-buttons-other-basic-buttons-one" type="radio" id="edit-buttons-other-basic-buttons-one" name="buttons_other_basic[buttons]" value="One" class="form-radio" />');
  $this
    ->assertRaw('<label for="edit-buttons-other-basic-buttons-one" class="option">One</label>');
  $this
    ->assertRaw('<input data-drupal-selector="edit-buttons-other-basic-other" type="text" id="edit-buttons-other-basic-other" name="buttons_other_basic[other]" value="Four" size="60" maxlength="255" placeholder="Enter other…" class="form-text" />');

  // Check advanced buttons_other w/ custom label.
  $this
    ->assertRaw('<span class="fieldset-legend js-form-required form-required">buttons_other_advanced</span>');
  $this
    ->assertRaw('<input data-drupal-selector="edit-buttons-other-advanced-buttons-one" type="radio" id="edit-buttons-other-advanced-buttons-one" name="buttons_other_advanced[buttons]" value="One" class="form-radio" />');
  $this
    ->assertRaw('<input data-drupal-selector="edit-buttons-other-advanced-other" aria-describedby="edit-buttons-other-advanced-other--description" type="text" id="edit-buttons-other-advanced-other" name="buttons_other_advanced[other]" value="Four" size="60" maxlength="255" placeholder="What is this other option" class="form-text" />');
  $this
    ->assertRaw('<div id="edit-buttons-other-advanced-other--description" class="webform-element-description">Other button description</div>');

  // Check buttons other required when checked.
  $edit = [
    'buttons_other_basic[buttons]' => '_other_',
    'buttons_other_basic[other]' => '',
  ];
  $this
    ->drupalPostForm('/webform/test_element_buttons', $edit, 'Submit');
  $this
    ->assertRaw('buttons_other_basic field is required.');

  // Check buttons other not required when not checked.
  $edit = [
    'buttons_other_basic[buttons]' => 'One',
    'buttons_other_basic[other]' => '',
  ];
  $this
    ->drupalPostForm('/webform/test_element_buttons', $edit, 'Submit');
  $this
    ->assertNoRaw('buttons_other_basic field is required.');

  // Check buttons other required validation.
  $edit = [
    'buttons_other_advanced[buttons]' => '_other_',
    'buttons_other_advanced[other]' => '',
  ];
  $this
    ->drupalPostForm('/webform/test_element_buttons', $edit, 'Submit');
  $this
    ->assertRaw('buttons_other_advanced field is required.');

  // Check buttons other processing w/ other.
  $edit = [
    'buttons_other_advanced[buttons]' => '_other_',
    'buttons_other_advanced[other]' => 'Five',
  ];
  $this
    ->drupalPostForm('/webform/test_element_buttons', $edit, 'Submit');
  $this
    ->assertRaw('buttons_other_advanced: Five');

  // Check buttons other processing w/o other.
  $edit = [
    'buttons_other_advanced[buttons]' => 'One',
    // This value is ignored, because 'buttons_other_advanced[buttons]' is not set to '_other_'.
    'buttons_other_advanced[other]' => 'Five',
  ];
  $this
    ->drupalPostForm('/webform/test_element_buttons', $edit, 'Submit');
  $this
    ->assertRaw('buttons_other_advanced: One');
  $this
    ->assertNoRaw('buttons_other_advanced: Five');
}