public function StorageTest::testImmutableForm in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/system/src/Tests/Form/StorageTest.php \Drupal\system\Tests\Form\StorageTest::testImmutableForm()
Verifies that form build-id is regenerated when loading an immutable form from the cache.
File
- core/
modules/ system/ src/ Tests/ Form/ StorageTest.php, line 139 - Contains \Drupal\system\Tests\Form\StorageTest.
Class
- StorageTest
- Tests a multistep form using form storage and makes sure validation and caching works right.
Namespace
Drupal\system\Tests\FormCode
public function testImmutableForm() {
// Request the form with 'cache' query parameter to enable form caching.
$this
->drupalGet('form_test/form-storage', [
'query' => [
'cache' => 1,
'immutable' => 1,
],
]);
$buildIdFields = $this
->xpath('//input[@name="form_build_id"]');
$this
->assertEqual(count($buildIdFields), 1, 'One form build id field on the page');
$buildId = (string) $buildIdFields[0]['value'];
// Trigger validation error by submitting an empty title.
$edit = [
'title' => '',
];
$this
->drupalPostForm(NULL, $edit, 'Continue submit');
// Verify that the build-id did change.
$this
->assertNoFieldByName('form_build_id', $buildId, 'Build id changes when form validation fails');
// Retrieve the new build-id.
$buildIdFields = $this
->xpath('//input[@name="form_build_id"]');
$this
->assertEqual(count($buildIdFields), 1, 'One form build id field on the page');
$buildId = (string) $buildIdFields[0]['value'];
// Trigger validation error by again submitting an empty title.
$edit = [
'title' => '',
];
$this
->drupalPostForm(NULL, $edit, 'Continue submit');
// Verify that the build-id does not change the second time.
$this
->assertFieldByName('form_build_id', $buildId, 'Build id remains the same when form validation fails subsequently');
}