You are here

public function ViewPageControllerTest::testHandleWithArgumentsOnOverriddenRouteWithUpcasting in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/views/tests/src/Unit/Routing/ViewPageControllerTest.php \Drupal\Tests\views\Unit\Routing\ViewPageControllerTest::testHandleWithArgumentsOnOverriddenRouteWithUpcasting()
  2. 10 core/modules/views/tests/src/Unit/Routing/ViewPageControllerTest.php \Drupal\Tests\views\Unit\Routing\ViewPageControllerTest::testHandleWithArgumentsOnOverriddenRouteWithUpcasting()

Tests the page controller with arguments of a overridden page view.

This test care about upcasted values and ensures that the raw variables are pulled in.

File

core/modules/views/tests/src/Unit/Routing/ViewPageControllerTest.php, line 145

Class

ViewPageControllerTest
@coversDefaultClass \Drupal\views\Routing\ViewPageController @group views

Namespace

Drupal\Tests\views\Unit\Routing

Code

public function testHandleWithArgumentsOnOverriddenRouteWithUpcasting() {
  $request = new Request();
  $request->attributes
    ->set('view_id', 'test_page_view');
  $request->attributes
    ->set('display_id', 'page_1');

  // Add the argument to the request.
  $request->attributes
    ->set('test_entity', $this
    ->createMock('Drupal\\Core\\Entity\\EntityInterface'));
  $raw_variables = new ParameterBag([
    'test_entity' => 'example_id',
  ]);
  $request->attributes
    ->set('_raw_variables', $raw_variables);
  $options = [
    '_view_argument_map' => [
      'arg_0' => 'test_entity',
    ],
    '_view_display_plugin_class' => '\\Drupal\\views\\Plugin\\views\\display\\Page',
  ];
  $request->attributes
    ->set(RouteObjectInterface::ROUTE_OBJECT, new Route('/test/{test_entity}', [
    'view_id' => 'test_page_view',
    'display_id' => 'default',
  ], [], $options));
  $route_match = RouteMatch::createFromRequest($request);
  $result = $this->pageController
    ->handle($route_match
    ->getParameter('view_id'), $route_match
    ->getParameter('display_id'), $route_match);
  $build = [
    '#type' => 'view',
    '#name' => 'test_page_view',
    '#display_id' => 'page_1',
    '#embed' => FALSE,
    '#arguments' => [
      'example_id',
    ],
    '#cache' => [
      'keys' => [
        'view',
        'test_page_view',
        'display',
        'page_1',
        'args',
        'example_id',
      ],
    ],
  ] + $this->defaultRenderArray;
  $this
    ->assertEquals($build, $result);
}