function PathPluginBaseTest::testAlterRouteWithAlterCallback

Same name and namespace in other branches
  1. 8.9.x core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php \Drupal\Tests\views\Unit\Plugin\display\PathPluginBaseTest::testAlterRouteWithAlterCallback()
  2. 10 core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php \Drupal\Tests\views\Unit\Plugin\display\PathPluginBaseTest::testAlterRouteWithAlterCallback()
  3. 11.x core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php \Drupal\Tests\views\Unit\Plugin\display\PathPluginBaseTest::testAlterRouteWithAlterCallback()

Tests the alter route method with preexisting title callback.

File

core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php, line 343

Class

PathPluginBaseTest
@coversDefaultClass <a href="/api/drupal/core%21modules%21views%21src%21Plugin%21views%21display%21PathPluginBase.php/class/PathPluginBase/9" title="The base display plugin for path/callbacks. This is used for pages and feeds." class="local">\Drupal\views\Plugin\views\display\PathPluginBase</a> @group views

Namespace

Drupal\Tests\views\Unit\Plugin\display

Code

public function testAlterRouteWithAlterCallback() {
    $collection = new RouteCollection();
    $collection->add('test_route', new Route('test_route', [
        '_controller' => 'Drupal\\Tests\\Core\\Controller\\TestController::content',
        '_title_callback' => '\\Drupal\\Tests\\views\\Unit\\Plugin\\display\\TestController::testTitle',
    ]));
    $route_2 = new Route('test_route/example', [
        '_controller' => 'Drupal\\Tests\\Core\\Controller\\TestController::content',
    ]);
    $collection->add('test_route_2', $route_2);
    [
        $view,
    ] = $this->setupViewExecutableAccessPlugin();
    $display = [];
    $display['display_plugin'] = 'page';
    $display['id'] = 'page_1';
    $display['display_options'] = [
        'path' => 'test_route',
    ];
    $this->pathPlugin
        ->initDisplay($view, $display);
    $view_route_names = $this->pathPlugin
        ->alterRoutes($collection);
    $this->assertEquals([
        'test_id.page_1' => 'test_route',
    ], $view_route_names);
    // Ensure that the test_route is overridden.
    $route = $collection->get('test_route');
    $this->assertInstanceOf(Route::class, $route);
    $this->assertEquals('test_id', $route->getDefault('view_id'));
    $this->assertEquals('\\Drupal\\Tests\\views\\Unit\\Plugin\\display\\TestController::testTitle', $route->getDefault('_title_callback'));
    $this->assertEquals('page_1', $route->getDefault('display_id'));
    // Ensure that the test_route_2 is not overridden.
    $route = $collection->get('test_route_2');
    $this->assertInstanceOf(Route::class, $route);
    $this->assertFalse($route->hasDefault('view_id'));
    $this->assertFalse($route->hasDefault('display_id'));
    $this->assertSame($collection->get('test_route_2'), $route_2);
}

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