public function ProgrammaticTest::testSubmissionWorkflow in Drupal 9
Same name and namespace in other branches
- 8 core/modules/system/tests/src/Kernel/Form/ProgrammaticTest.php \Drupal\Tests\system\Kernel\Form\ProgrammaticTest::testSubmissionWorkflow()
Tests the programmatic form submission workflow.
File
- core/
modules/ system/ tests/ src/ Kernel/ Form/ ProgrammaticTest.php, line 26
Class
- ProgrammaticTest
- Tests the programmatic form submission behavior.
Namespace
Drupal\Tests\system\Kernel\FormCode
public function testSubmissionWorkflow() {
// Backup the current batch status and reset it to avoid conflicts while
// processing the dummy form submit handler.
$current_batch = $batch =& batch_get();
$batch = [];
// Test that a programmatic form submission is rejected when a required
// textfield is omitted and correctly processed when it is provided.
$this
->doSubmitForm([], FALSE);
$this
->doSubmitForm([
'textfield' => 'test 1',
], TRUE);
$this
->doSubmitForm([], FALSE);
$this
->doSubmitForm([
'textfield' => 'test 2',
], TRUE);
// Test that a programmatic form submission can turn on and off checkboxes
// which are, by default, checked.
$this
->doSubmitForm([
'textfield' => 'dummy value',
'checkboxes' => [
1 => 1,
2 => 2,
],
], TRUE);
$this
->doSubmitForm([
'textfield' => 'dummy value',
'checkboxes' => [
1 => 1,
2 => NULL,
],
], TRUE);
$this
->doSubmitForm([
'textfield' => 'dummy value',
'checkboxes' => [
1 => NULL,
2 => 2,
],
], TRUE);
$this
->doSubmitForm([
'textfield' => 'dummy value',
'checkboxes' => [
1 => NULL,
2 => NULL,
],
], TRUE);
// Test that a programmatic form submission can correctly click a button
// that limits validation errors based on user input. Since we do not
// submit any values for "textfield" here and the textfield is required, we
// only expect form validation to pass when validation is limited to a
// different field.
$this
->doSubmitForm([
'op' => 'Submit with limited validation',
'field_to_validate' => 'all',
], FALSE);
$this
->doSubmitForm([
'op' => 'Submit with limited validation',
'field_to_validate' => 'textfield',
], FALSE);
$this
->doSubmitForm([
'op' => 'Submit with limited validation',
'field_to_validate' => 'field_to_validate',
], TRUE);
// Restore the current batch status.
$batch = $current_batch;
}