3 namespace Drupal\Tests\Core\Routing;
5 use Drupal\Core\Routing\RouteMatch;
6 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
7 use Symfony\Component\HttpFoundation\ParameterBag;
8 use Symfony\Component\HttpFoundation\Request;
9 use Symfony\Component\Routing\Route;
12 * @coversDefaultClass \Drupal\Core\Routing\RouteMatch
15 class RouteMatchTest extends RouteMatchTestBase {
20 protected function getRouteMatch($name, Route $route, array $parameters, array $raw_parameters) {
21 return new RouteMatch($name, $route, $parameters, $raw_parameters);
25 * @covers ::createFromRequest
26 * @covers ::__construct
28 public function testRouteMatchFromRequest() {
29 $request = new Request();
31 // A request that hasn't been routed yet.
32 $route_match = RouteMatch::createFromRequest($request);
33 $this->assertNull($route_match->getRouteName());
34 $this->assertNull($route_match->getRouteObject());
35 $this->assertSame([], $route_match->getParameters()->all());
36 $this->assertNull($route_match->getParameter('foo'));
37 $this->assertSame([], $route_match->getRawParameters()->all());
38 $this->assertNull($route_match->getRawParameter('foo'));
40 // A routed request without parameter upcasting.
41 $route = new Route('/test-route/{foo}');
42 $request->attributes->set(RouteObjectInterface::ROUTE_NAME, 'test_route');
43 $request->attributes->set(RouteObjectInterface::ROUTE_OBJECT, $route);
44 $request->attributes->set('foo', '1');
45 $route_match = RouteMatch::createFromRequest($request);
46 $this->assertSame('test_route', $route_match->getRouteName());
47 $this->assertSame($route, $route_match->getRouteObject());
48 $this->assertSame(['foo' => '1'], $route_match->getParameters()->all());
49 $this->assertSame([], $route_match->getRawParameters()->all());
51 // A routed request with parameter upcasting.
52 $foo = new \stdClass();
54 $request->attributes->set('foo', $foo);
55 $request->attributes->set('_raw_variables', new ParameterBag(['foo' => '1']));
56 $route_match = RouteMatch::createFromRequest($request);
57 $this->assertSame(['foo' => $foo], $route_match->getParameters()->all());
58 $this->assertSame(['foo' => '1'], $route_match->getRawParameters()->all());