You are here

public function BigPipeStrategyTest::testProcessPlaceholders in Drupal 9

Same name and namespace in other branches
  1. 8 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 26

Class

BigPipeStrategyTest
@coversDefaultClass \Drupal\big_pipe\Render\Placeholder\BigPipeStrategy @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) {
  $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);
  }
}