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[[api-linebreak]] @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.