Pull merge.
[yaffs-website] / web / core / modules / system / tests / src / FunctionalJavascript / Form / ElementsTableSelectTest.php
1 <?php
2
3 namespace Drupal\Tests\system\FunctionalJavascript\Form;
4
5 use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
6
7 /**
8  * Tests the tableselect form element for expected behavior.
9  *
10  * @group Form
11  */
12 class ElementsTableSelectTest extends WebDriverTestBase {
13
14   /**
15    * {@inheritdoc}
16    */
17   protected static $modules = ['form_test'];
18
19   /**
20    * Test the presence of ajax functionality for all options.
21    */
22   public function testAjax() {
23     // Test checkboxes (#multiple == TRUE).
24     $this->drupalGet('form_test/tableselect/multiple-true');
25     $session = $this->getSession();
26     $page = $session->getPage();
27     for ($i = 1; $i <= 3; $i++) {
28       $row = 'row' . $i;
29       $page->hasUncheckedField($row);
30       $page->checkField($row);
31       $this->assertSession()->assertWaitOnAjaxRequest();
32       // Check current row and previous rows are checked.
33       for ($j = 1; $j <= $i; $j++) {
34         $other_row = 'row' . $j;
35         $page->hasCheckedField($other_row);
36       }
37     }
38
39     // Test radios (#multiple == FALSE).
40     $this->drupalGet('form_test/tableselect/multiple-false');
41     for ($i = 1; $i <= 3; $i++) {
42       $row = 'input[value="row' . $i . '"]';
43       $page->hasUncheckedField($row);
44       $this->click($row);
45       $this->assertSession()->assertWaitOnAjaxRequest();
46       $page->hasCheckedField($row);
47       // Check other rows are not checked
48       for ($j = 1; $j <= 3; $j++) {
49         if ($j == $i) {
50           continue;
51         }
52         $other_row = 'edit-tableselect-row' . $j;
53         $page->hasUncheckedField($other_row);
54       }
55     }
56   }
57
58 }