function BigPipeStrategyTest::testProcessPlaceholders

Same name and namespace in other branches
  1. 9 core/modules/big_pipe/tests/src/Unit/Render/Placeholder/BigPipeStrategyTest.php \Drupal\Tests\big_pipe\Unit\Render\Placeholder\BigPipeStrategyTest::testProcessPlaceholders()
  2. 8.9.x core/modules/big_pipe/tests/src/Unit/Render/Placeholder/BigPipeStrategyTest.php \Drupal\Tests\big_pipe\Unit\Render\Placeholder\BigPipeStrategyTest::testProcessPlaceholders()
  3. 10 core/modules/big_pipe/tests/src/Unit/Render/Placeholder/BigPipeStrategyTest.php \Drupal\Tests\big_pipe\Unit\Render\Placeholder\BigPipeStrategyTest::testProcessPlaceholders()

@covers ::processPlaceholders

@dataProvider placeholdersProvider

File

core/modules/big_pipe/tests/src/Unit/Render/Placeholder/BigPipeStrategyTest.php, line 28

Class

BigPipeStrategyTest
@coversDefaultClass <a href="/api/drupal/core%21modules%21big_pipe%21src%21Render%21Placeholder%21BigPipeStrategy.php/class/BigPipeStrategy/11.x" title="Defines the BigPipe placeholder strategy, to send HTML in chunks." class="local">\Drupal\big_pipe\Render\Placeholder\BigPipeStrategy</a> @group big_pipe

Namespace

Drupal\Tests\big_pipe\Unit\Render\Placeholder

Code

public function testProcessPlaceholders(array $placeholders, $method, $route_match_has_no_big_pipe_option, $request_has_session, $request_has_big_pipe_nojs_cookie, array $expected_big_pipe_placeholders) : void {
    $request = new Request();
    $request->setMethod($method);
    if ($request_has_big_pipe_nojs_cookie) {
        $request->cookies
            ->set(BigPipeStrategy::NOJS_COOKIE, 1);
    }
    $request_stack = $this->prophesize(RequestStack::class);
    $request_stack->getCurrentRequest()
        ->willReturn($request);
    $session_configuration = $this->prophesize(SessionConfigurationInterface::class);
    $session_configuration->hasSession(Argument::type(Request::class))
        ->willReturn($request_has_session);
    $route = $this->prophesize(Route::class);
    $route->getOption('_no_big_pipe')
        ->willReturn($route_match_has_no_big_pipe_option);
    $route_match = $this->prophesize(RouteMatchInterface::class);
    $route_match->getRouteObject()
        ->willReturn($route);
    $big_pipe_strategy = new BigPipeStrategy($session_configuration->reveal(), $request_stack->reveal(), $route_match->reveal());
    $processed_placeholders = $big_pipe_strategy->processPlaceholders($placeholders);
    if ($request->isMethodCacheable() && !$route_match_has_no_big_pipe_option && $request_has_session) {
        $this->assertSameSize($expected_big_pipe_placeholders, $processed_placeholders, 'BigPipe is able to deliver all placeholders.');
        foreach (array_keys($placeholders) as $placeholder) {
            $this->assertSame($expected_big_pipe_placeholders[$placeholder], $processed_placeholders[$placeholder], "Verifying how BigPipeStrategy handles the placeholder '{$placeholder}'");
        }
    }
    else {
        $this->assertCount(0, $processed_placeholders);
    }
}

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