You are here

public function WebformStatesCustomJavaScriptTest::testCustomStates in Webform 8.5

Same name and namespace in other branches
  1. 6.x tests/src/FunctionalJavascript/States/WebformStatesCustomJavaScriptTest.php \Drupal\Tests\webform\FunctionalJavascript\States\WebformStatesCustomJavaScriptTest::testCustomStates()

Tests custom states.

File

tests/src/FunctionalJavascript/States/WebformStatesCustomJavaScriptTest.php, line 26

Class

WebformStatesCustomJavaScriptTest
Tests for webform submission conditions (#states) validator.

Namespace

Drupal\Tests\webform\FunctionalJavascript\States

Code

public function testCustomStates() {
  $session = $this
    ->getSession();
  $page = $session
    ->getPage();
  $this
    ->drupalGet('/webform/test_states_server_custom');

  /**************************************************************************/

  // Pattern (^[a-z]+$).

  /**************************************************************************/

  // Check pattern dependent is not visible.
  $dependent_pattern = $page
    ->findField('edit-dependent-pattern');
  $this
    ->assertFalse($dependent_pattern
    ->isVisible());

  // Check pattern dependent is visible.
  $page
    ->fillField('edit-trigger-pattern', 'a');
  $this
    ->assertTrue($dependent_pattern
    ->isVisible());

  // Check pattern dependent is not visible.
  $page
    ->fillField('edit-trigger-pattern', '1');
  $this
    ->assertFalse($dependent_pattern
    ->isVisible());

  /**************************************************************************/

  // !Pattern (^$).

  /**************************************************************************/

  // Check !pattern dependent is not visible.
  $dependent_not_pattern = $page
    ->findField('edit-dependent-not-pattern');
  $this
    ->assertFalse($dependent_not_pattern
    ->isVisible());

  // Check !pattern dependent is visible.
  $page
    ->fillField('edit-trigger-not-pattern', 'a');
  $this
    ->assertTrue($dependent_not_pattern
    ->isVisible());

  // Check !pattern dependent is not visible.
  $page
    ->fillField('edit-trigger-not-pattern', '');
  $this
    ->assertFalse($dependent_not_pattern
    ->isVisible());

  /**************************************************************************/

  // Less (< 10).

  /**************************************************************************/

  // Check less dependent is not visible.
  $dependent_less = $page
    ->findField('edit-dependent-less');
  $this
    ->assertFalse($dependent_less
    ->isVisible());

  // Check less dependent is visible.
  $page
    ->fillField('edit-trigger-less', '5');
  $this
    ->assertTrue($dependent_less
    ->isVisible());

  // Check less dependent is not visible.
  $page
    ->fillField('edit-trigger-less', '11');
  $this
    ->assertFalse($dependent_less
    ->isVisible());

  /**************************************************************************/

  // Less/Equal (<= 10).

  /**************************************************************************/

  // Check less dependent is not visible.
  $dependent_less_equal = $page
    ->findField('edit-dependent-less-equal');
  $this
    ->assertFalse($dependent_less_equal
    ->isVisible());

  // Check less dependent is visible.
  $page
    ->fillField('edit-trigger-less-equal', '10');
  $this
    ->assertTrue($dependent_less_equal
    ->isVisible());

  // Check less dependent is not visible.
  $page
    ->fillField('edit-trigger-less-equal', '11');
  $this
    ->assertFalse($dependent_less_equal
    ->isVisible());

  /**************************************************************************/

  // Greater (> 10).

  /**************************************************************************/

  // Check greater dependent is not visible.
  $dependent_greater = $page
    ->findField('edit-dependent-greater');
  $this
    ->assertFalse($dependent_greater
    ->isVisible());

  // Check greater dependent is visible.
  $page
    ->fillField('edit-trigger-greater', '11');
  $this
    ->assertTrue($dependent_greater
    ->isVisible());

  // Check greater dependent is not visible.
  $page
    ->fillField('edit-trigger-greater', '5');
  $this
    ->assertFalse($dependent_greater
    ->isVisible());

  /**************************************************************************/

  // Greater/Equal (> 10).

  /**************************************************************************/

  // Check greater dependent is not visible.
  $dependent_greater_equal = $page
    ->findField('edit-dependent-greater-equal');
  $this
    ->assertFalse($dependent_greater_equal
    ->isVisible());

  // Check greater dependent is visible.
  $page
    ->fillField('edit-trigger-greater-equal', '10');
  $this
    ->assertTrue($dependent_greater_equal
    ->isVisible());

  // Check greater dependent is not visible.
  $page
    ->fillField('edit-trigger-greater-equal', '5');
  $this
    ->assertFalse($dependent_greater_equal
    ->isVisible());

  /**************************************************************************/

  // Between (10 > & < 20).

  /**************************************************************************/

  // Check between dependent is not visible.
  $dependent_between = $page
    ->findField('edit-dependent-between');
  $dependent_not_between = $page
    ->findField('edit-dependent-not-between');
  $this
    ->assertFalse($dependent_between
    ->isVisible());
  $this
    ->assertFalse($dependent_not_between
    ->isVisible());

  // Check between dependent is visible.
  $page
    ->fillField('edit-trigger-between', '11');
  $this
    ->assertTrue($dependent_between
    ->isVisible());
  $this
    ->assertFalse($dependent_not_between
    ->isVisible());

  // Check between dependent is not visible.
  $page
    ->fillField('edit-trigger-between', '5');
  $this
    ->assertFalse($dependent_between
    ->isVisible());
  $this
    ->assertTrue($dependent_not_between
    ->isVisible());

  // Check between dependent is not visible.
  $page
    ->fillField('edit-trigger-between', '');
  $this
    ->assertFalse($dependent_between
    ->isVisible());
  $this
    ->assertFalse($dependent_not_between
    ->isVisible());

  // Check between dependent is not visible.
  $page
    ->fillField('edit-trigger-between', '21');
  $this
    ->assertFalse($dependent_between
    ->isVisible());
  $this
    ->assertTrue($dependent_not_between
    ->isVisible());
}