Mercurial > hg > isophonics-drupal-site
diff core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxInGroupTest.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxInGroupTest.php Thu Feb 28 13:21:36 2019 +0000 @@ -0,0 +1,57 @@ +<?php + +namespace Drupal\FunctionalJavascriptTests\Ajax; + +use Drupal\FunctionalJavascriptTests\WebDriverTestBase; + +/** + * Tests that form elements in groups work correctly with AJAX. + * + * @group Ajax + */ +class AjaxInGroupTest extends WebDriverTestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = ['ajax_forms_test']; + + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + + $this->drupalLogin($this->drupalCreateUser(['access content'])); + } + + /** + * Submits forms with select and checkbox elements via Ajax. + */ + public function testSimpleAjaxFormValue() { + $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 a 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'); + } + +}