You are here

public function ElementsTableSelectTest::testAjax in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/system/tests/src/FunctionalJavascript/Form/ElementsTableSelectTest.php \Drupal\Tests\system\FunctionalJavascript\Form\ElementsTableSelectTest::testAjax()

Tests the presence of ajax functionality for all options.

File

core/modules/system/tests/src/FunctionalJavascript/Form/ElementsTableSelectTest.php, line 27

Class

ElementsTableSelectTest
Tests the tableselect form element for expected behavior.

Namespace

Drupal\Tests\system\FunctionalJavascript\Form

Code

public function testAjax() {

  // Test checkboxes (#multiple == TRUE).
  $this
    ->drupalGet('form_test/tableselect/multiple-true');
  $session = $this
    ->getSession();
  $page = $session
    ->getPage();
  for ($i = 1; $i <= 3; $i++) {
    $row = 'row' . $i;
    $page
      ->hasUncheckedField($row);
    $page
      ->checkField($row);
    $this
      ->assertSession()
      ->assertWaitOnAjaxRequest();

    // Check current row and previous rows are checked.
    for ($j = 1; $j <= $i; $j++) {
      $other_row = 'row' . $j;
      $page
        ->hasCheckedField($other_row);
    }
  }

  // Test radios (#multiple == FALSE).
  $this
    ->drupalGet('form_test/tableselect/multiple-false');
  for ($i = 1; $i <= 3; $i++) {
    $row = 'input[value="row' . $i . '"]';
    $page
      ->hasUncheckedField($row);
    $this
      ->click($row);
    $this
      ->assertSession()
      ->assertWaitOnAjaxRequest();
    $page
      ->hasCheckedField($row);

    // Check other rows are not checked
    for ($j = 1; $j <= 3; $j++) {
      if ($j == $i) {
        continue;
      }
      $other_row = 'edit-tableselect-row' . $j;
      $page
        ->hasUncheckedField($other_row);
    }
  }
}