1.20.x form.test | FormsFormStorageTestCase::testFormStatePersist() |
Tests a form using form state without using 'storage' to pass data from the constructor to a submit handler. The data has to persist even when caching gets activated, what may happen when a modules alter the form and adds #ajax properties.
File
- modules/
simpletest/ tests/ form.test, line 1250 - Unit tests for the Backdrop Form API.
Class
- FormsFormStorageTestCase
- Test the form storage on a multistep form.
Code
function testFormStatePersist() {
// Test the form one time with caching activated and one time without.
$run_options = array(
array(),
array('query' => array('cache' => 1)),
);
foreach ($run_options as $options) {
$this->backdropPost('form-test/state-persist', array(), t('Submit'), $options);
// The submit handler outputs the value in $form_state, assert it's there.
$this->assertText('State persisted.');
// Test it again, but first trigger a validation error, then test.
$this->backdropPost('form-test/state-persist', array('title' => ''), t('Submit'), $options);
$this->assertText(t('!name field is required.', array('!name' => 'title')));
// Submit the form again triggering no validation error.
$this->backdropPost(NULL, array('title' => 'foo'), t('Submit'), $options);
$this->assertText('State persisted.');
// Now post to the rebuilt form and verify it's still there afterwards.
$this->backdropPost(NULL, array('title' => 'bar'), t('Submit'), $options);
$this->assertText('State persisted.');
}
}