function TitleResolverTest::testStaticTitleWithArguments

Tests a static title with and without overridden default arguments.

See also

\Drupal\Core\Controller\TitleResolver::getTitle()

File

core/tests/Drupal/Tests/Core/Controller/TitleResolverTest.php, line 116

Class

TitleResolverTest
@coversDefaultClass \Drupal\Core\Controller\TitleResolver @group Controller

Namespace

Drupal\Tests\Core\Controller

Code

public function testStaticTitleWithArguments() : void {
    // Set up the request with optional override variables.
    $request = new Request();
    $raw_variables = new InputBag([
        'test' => 'override value',
    ]);
    // Array of cases.
    $cases = [
        // Case 1: No override, uses default arguments.
[
            'route_args' => [
                '_title' => 'static title @test',
                '_title_arguments' => [
                    '@test' => 'value',
                    '@test2' => 'value2',
                ],
            ],
            'expected' => new TranslatableMarkup('static title @test', [
                '@test' => 'value',
                '@test2' => 'value2',
            ], [], $this->translationManager),
            'override' => FALSE,
        ],
        [
            'route_args' => [
                '_title' => 'static title %test',
                '_title_arguments' => [
                    '%test' => 'value',
                    '%test2' => 'value2',
                ],
            ],
            'expected' => new TranslatableMarkup('static title %test', [
                '%test' => 'value',
                '%test2' => 'value2',
            ], [], $this->translationManager),
            'override' => FALSE,
        ],
        // Case 2: Override arguments.
[
            'route_args' => [
                '_title' => 'static title @test @test2',
                '_title_arguments' => [
                    '@test' => 'value',
                    '@test2' => 'value2',
                ],
            ],
            'expected' => new TranslatableMarkup('static title @test @test2', [
                '@test' => 'override value',
                '%test' => 'override value',
                '@test2' => 'value2',
            ], [], $this->translationManager),
            'override' => TRUE,
        ],
        [
            'route_args' => [
                '_title' => 'static title %test %test2',
                '_title_arguments' => [
                    '%test' => 'value',
                    '%test2' => 'value2',
                ],
            ],
            'expected' => new TranslatableMarkup('static title %test %test2', [
                '@test' => 'override value',
                '%test' => 'override value',
                '%test2' => 'value2',
            ], [], $this->translationManager),
            'override' => TRUE,
        ],
    ];
    foreach ($cases as $case) {
        // Adjust the request based on whether we expect overrides.
        if ($case['override']) {
            $request->attributes
                ->set('_raw_variables', $raw_variables);
        }
        $route = new Route('/test-route', $case['route_args']);
        $this->assertEquals($case['expected'], $this->titleResolver
            ->getTitle($request, $route));
    }
}

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