Version 1
[yaffs-website] / web / core / tests / Drupal / Tests / Core / Routing / RouteMatchTest.php
diff --git a/web/core/tests/Drupal/Tests/Core/Routing/RouteMatchTest.php b/web/core/tests/Drupal/Tests/Core/Routing/RouteMatchTest.php
new file mode 100644 (file)
index 0000000..0a3c65c
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+
+namespace Drupal\Tests\Core\Routing;
+
+use Drupal\Core\Routing\RouteMatch;
+use Symfony\Cmf\Component\Routing\RouteObjectInterface;
+use Symfony\Component\HttpFoundation\ParameterBag;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\Routing\Route;
+
+/**
+ * @coversDefaultClass \Drupal\Core\Routing\RouteMatch
+ * @group Routing
+ */
+class RouteMatchTest extends RouteMatchTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function getRouteMatch($name, Route $route, array $parameters, array $raw_parameters) {
+    return new RouteMatch($name, $route, $parameters, $raw_parameters);
+  }
+
+  /**
+   * @covers ::createFromRequest
+   * @covers ::__construct
+   */
+  public function testRouteMatchFromRequest() {
+    $request = new Request();
+
+    // A request that hasn't been routed yet.
+    $route_match = RouteMatch::createFromRequest($request);
+    $this->assertNull($route_match->getRouteName());
+    $this->assertNull($route_match->getRouteObject());
+    $this->assertSame([], $route_match->getParameters()->all());
+    $this->assertNull($route_match->getParameter('foo'));
+    $this->assertSame([], $route_match->getRawParameters()->all());
+    $this->assertNull($route_match->getRawParameter('foo'));
+
+    // A routed request without parameter upcasting.
+    $route = new Route('/test-route/{foo}');
+    $request->attributes->set(RouteObjectInterface::ROUTE_NAME, 'test_route');
+    $request->attributes->set(RouteObjectInterface::ROUTE_OBJECT, $route);
+    $request->attributes->set('foo', '1');
+    $route_match = RouteMatch::createFromRequest($request);
+    $this->assertSame('test_route', $route_match->getRouteName());
+    $this->assertSame($route, $route_match->getRouteObject());
+    $this->assertSame(['foo' => '1'], $route_match->getParameters()->all());
+    $this->assertSame([], $route_match->getRawParameters()->all());
+
+    // A routed request with parameter upcasting.
+    $foo = new \stdClass();
+    $foo->value = 1;
+    $request->attributes->set('foo', $foo);
+    $request->attributes->set('_raw_variables', new ParameterBag(['foo' => '1']));
+    $route_match = RouteMatch::createFromRequest($request);
+    $this->assertSame(['foo' => $foo], $route_match->getParameters()->all());
+    $this->assertSame(['foo' => '1'], $route_match->getRawParameters()->all());
+  }
+
+}