function ProcessingTest::testBatchFormMultistep

Same name in other branches
  1. 8.9.x core/modules/system/tests/src/Functional/Batch/ProcessingTest.php \Drupal\Tests\system\Functional\Batch\ProcessingTest::testBatchFormMultistep()
  2. 10 core/modules/system/tests/src/Functional/Batch/ProcessingTest.php \Drupal\Tests\system\Functional\Batch\ProcessingTest::testBatchFormMultistep()
  3. 11.x core/modules/system/tests/src/Functional/Batch/ProcessingTest.php \Drupal\Tests\system\Functional\Batch\ProcessingTest::testBatchFormMultistep()

Tests batches defined in a multistep form.

File

core/modules/system/tests/src/Functional/Batch/ProcessingTest.php, line 133

Class

ProcessingTest
Tests batch processing in form and non-form workflow.

Namespace

Drupal\Tests\system\Functional\Batch

Code

public function testBatchFormMultistep() {
    $this->drupalGet('batch-test/multistep');
    $this->assertSession()
        ->assertNoEscaped('<');
    $this->assertSession()
        ->pageTextContains('step 1');
    // First step triggers batch 1.
    $this->submitForm([], 'Submit');
    $this->assertBatchMessages($this->_resultMessages('batch_1'), 'Batch for step 1 performed successfully.');
    $this->assertEquals($this->_resultStack('batch_1'), batch_test_stack(), 'Execution order was correct.');
    $this->assertSession()
        ->pageTextContains('step 2');
    $this->assertSession()
        ->assertNoEscaped('<');
    // Second step triggers batch 2.
    $this->submitForm([], 'Submit');
    $this->assertBatchMessages($this->_resultMessages('batch_2'), 'Batch for step 2 performed successfully.');
    $this->assertEquals($this->_resultStack('batch_2'), batch_test_stack(), 'Execution order was correct.');
    $this->assertSession()
        ->pageTextContains('Redirection successful.');
    $this->assertSession()
        ->assertNoEscaped('<');
    // Extra query arguments will trigger logic that will add them to the
    // redirect URL. Make sure they are persisted.
    $this->drupalGet('batch-test/multistep', [
        'query' => [
            'big_tree' => 'small_axe',
        ],
    ]);
    $this->submitForm([], 'Submit');
    $this->assertSession()
        ->pageTextContains('step 2');
    $this->assertStringContainsString('batch-test/multistep?big_tree=small_axe', $this->getUrl(), 'Query argument was persisted and another extra argument was added.');
}

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