function LayoutBuilderFormModeTest::testDiscardValidation

Same name and namespace in other branches
  1. 9 core/modules/layout_builder/tests/src/Functional/LayoutBuilderFormModeTest.php \Drupal\Tests\layout_builder\Functional\LayoutBuilderFormModeTest::testDiscardValidation()
  2. 11.x core/modules/layout_builder/tests/src/Functional/LayoutBuilderFormModeTest.php \Drupal\Tests\layout_builder\Functional\LayoutBuilderFormModeTest::testDiscardValidation()

Tests that the 'Discard changes' button skips validation and ignores input.

File

core/modules/layout_builder/tests/src/Functional/LayoutBuilderFormModeTest.php, line 98

Class

LayoutBuilderFormModeTest
Tests Layout Builder forms.

Namespace

Drupal\Tests\layout_builder\Functional

Code

public function testDiscardValidation() : void {
  $page = $this->getSession()
    ->getPage();
  $assert_session = $this->assertSession();
  // When submitting the form normally, a validation error should be shown.
  $this->drupalGet('entity_test/1/layout');
  $assert_session->fieldExists('foo[0][value]');
  $assert_session->elementAttributeContains('named', [
    'field',
    'foo[0][value]',
  ], 'required', 'required');
  $page->pressButton('Save layout');
  $assert_session->pageTextContains('foo field is required.');
  // When Discarding changes, a validation error will not be shown.
  // Reload the form for fresh state.
  $this->drupalGet('entity_test/1/layout');
  $page->pressButton('Discard changes');
  $assert_session->pageTextNotContains('foo field is required.');
  $assert_session->addressEquals('entity_test/1/layout/discard-changes');
  // Submit the form to ensure no invalid form state retained.
  $page->pressButton('Confirm');
  $assert_session->pageTextContains('The changes to the layout have been discarded.');
}

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