You are here

public function RouteMatchTestBase::routeMatchProvider in Drupal 9

Same name and namespace in other branches
  1. 8 core/tests/Drupal/Tests/Core/Routing/RouteMatchTestBase.php \Drupal\Tests\Core\Routing\RouteMatchTestBase::routeMatchProvider()

Provide sets of parameters and expected parameters for parameter tests.

File

core/tests/Drupal/Tests/Core/Routing/RouteMatchTestBase.php, line 33

Class

RouteMatchTestBase
Base test class for testing classes implementing the route match interface.

Namespace

Drupal\Tests\Core\Routing

Code

public function routeMatchProvider() {
  $base_data = [
    [
      new Route('/test-route/{param_without_leading_underscore}/{_param_with_leading_underscore}', [
        'default_without_leading_underscore' => NULL,
        '_default_with_leading_underscore' => NULL,
      ]),
      [
        'param_without_leading_underscore' => 'value',
        '_param_with_leading_underscore' => 'value',
        'default_without_leading_underscore' => 'value',
        '_default_with_leading_underscore' => 'value',
        'foo' => 'value',
      ],
      // Parameters should be filtered to only those defined by the route.
      // Specifically:
      // - Path parameters, regardless of name.
      // - Defaults that are not path parameters only if they do not start with
      //   an underscore.
      [
        'param_without_leading_underscore' => 'value',
        '_param_with_leading_underscore' => 'value',
        'default_without_leading_underscore' => 'value',
      ],
    ],
  ];
  $data = [];
  foreach ($base_data as $entry) {
    $route = $entry[0];
    $params = $entry[1];
    $expected_params = $entry[2];
    $data[] = [
      $this
        ->getRouteMatch('test_route', $route, $params, $params),
      $route,
      $params,
      $expected_params,
    ];
  }
  return $data;
}