function AjaxInGroupTest::testSimpleAjaxFormValue

Same name in other branches
  1. 9 core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxInGroupTest.php \Drupal\FunctionalJavascriptTests\Ajax\AjaxInGroupTest::testSimpleAjaxFormValue()
  2. 8.9.x core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxInGroupTest.php \Drupal\FunctionalJavascriptTests\Ajax\AjaxInGroupTest::testSimpleAjaxFormValue()
  3. 11.x core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxInGroupTest.php \Drupal\FunctionalJavascriptTests\Ajax\AjaxInGroupTest::testSimpleAjaxFormValue()

Submits forms with select and checkbox elements via Ajax.

File

core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxInGroupTest.php, line 38

Class

AjaxInGroupTest
Tests that form elements in groups work correctly with AJAX.

Namespace

Drupal\FunctionalJavascriptTests\Ajax

Code

public function testSimpleAjaxFormValue() : void {
    $this->drupalGet('/ajax_forms_test_get_form');
    $assert_session = $this->assertSession();
    $assert_session->responseContains('Test group');
    $assert_session->responseContains('AJAX checkbox in a group');
    $session = $this->getSession();
    $checkbox_original = $session->getPage()
        ->findField('checkbox_in_group');
    $this->assertNotNull($checkbox_original, 'The checkbox_in_group is on the page.');
    $original_id = $checkbox_original->getAttribute('id');
    // Triggers an AJAX request/response.
    $checkbox_original->check();
    // The response contains a new nested "test group" form element, similar
    // to the one already in the DOM except for a change in the form build id.
    $checkbox_new = $assert_session->waitForElement('xpath', "//input[@name='checkbox_in_group' and not(@id='{$original_id}')]");
    $this->assertNotNull($checkbox_new, 'DOM update: clicking the checkbox refreshed the checkbox_in_group structure');
    $assert_session->responseContains('Test group');
    $assert_session->responseContains('AJAX checkbox in a group');
    $assert_session->responseContains('AJAX checkbox in a nested group');
    $assert_session->responseContains('Another AJAX checkbox in a nested group');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.