function ProgrammaticTest::testSubmissionWorkflow

Same name in other branches
  1. 9 core/modules/system/tests/src/Kernel/Form/ProgrammaticTest.php \Drupal\Tests\system\Kernel\Form\ProgrammaticTest::testSubmissionWorkflow()
  2. 8.9.x core/modules/system/tests/src/Kernel/Form/ProgrammaticTest.php \Drupal\Tests\system\Kernel\Form\ProgrammaticTest::testSubmissionWorkflow()
  3. 10 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 25

Class

ProgrammaticTest
Tests the programmatic form submission behavior.

Namespace

Drupal\Tests\system\Kernel\Form

Code

public function testSubmissionWorkflow() : void {
    // 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;
}

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