You are here

public function DurationElementStatesTest::testDurationStates in Duration Field 8.2

Same name and namespace in other branches
  1. 3.0.x tests/src/FunctionalJavascript/DurationElementStatesTest.php \Drupal\Tests\duration_field\FunctionalJavascript\DurationElementStatesTest::testDurationStates()

Tests JavaScript #states functionality for 'duration' elements.

File

tests/src/FunctionalJavascript/DurationElementStatesTest.php, line 51

Class

DurationElementStatesTest
Tests the JavaScript #states functionality of 'duration' form elements.

Namespace

Drupal\Tests\duration_field\FunctionalJavascript

Code

public function testDurationStates() {
  $this
    ->drupalGet('/duration-field-form-test/duration-element-states');
  $page = $this
    ->getSession()
    ->getPage();
  $assert_session = $this
    ->assertSession();

  // Test states of elements triggered by a checkbox element.
  $trigger = $page
    ->findField('checkbox_trigger');
  $this
    ->assertNotEmpty($trigger);

  // Check initial state.
  $duration_invisible_element = $assert_session
    ->elementExists('css', 'form div.js-form-item-duration-invisible-when-checkbox-trigger-checked');
  $duration_invisible_element_label = $assert_session
    ->elementExists('css', 'form div.js-form-item-duration-invisible-when-checkbox-trigger-checked label');
  $duration_invisible_element_days = $page
    ->findField('duration_invisible_when_checkbox_trigger_checked[d]');
  $duration_invisible_element_hours = $page
    ->findField('duration_invisible_when_checkbox_trigger_checked[h]');
  $duration_invisible_element_seconds = $page
    ->findField('duration_invisible_when_checkbox_trigger_checked[s]');
  $this
    ->assertTrue($duration_invisible_element
    ->isVisible());
  $this
    ->assertTrue($duration_invisible_element_label
    ->isVisible());
  $this
    ->assertTrue($duration_invisible_element_days
    ->isVisible());
  $this
    ->assertTrue($duration_invisible_element_hours
    ->isVisible());
  $this
    ->assertTrue($duration_invisible_element_seconds
    ->isVisible());

  // Change state: check the checkbox.
  $trigger
    ->check();

  // Test that the duration and sub-elements are not visible anymore.
  $this
    ->assertFalse($duration_invisible_element
    ->isVisible());
  $this
    ->assertFalse($duration_invisible_element_label
    ->isVisible());
  $this
    ->assertFalse($duration_invisible_element_days
    ->isVisible());
  $this
    ->assertFalse($duration_invisible_element_hours
    ->isVisible());
  $this
    ->assertFalse($duration_invisible_element_seconds
    ->isVisible());
}