function ViewPageControllerTest::testHandleWithArgumentsOnOverriddenRouteWithUpcasting

Same name in other branches
  1. 8.9.x 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()
  3. 11.x core/modules/views/tests/src/Unit/Routing/ViewPageControllerTest.php \Drupal\Tests\views\Unit\Routing\ViewPageControllerTest::testHandleWithArgumentsOnOverriddenRouteWithUpcasting()

Tests the page controller with arguments of an 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 148

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);
}

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