Mercurial > hg > isophonics-drupal-site
diff core/modules/system/src/Tests/Routing/MockRouteProvider.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 7a779792577d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/system/src/Tests/Routing/MockRouteProvider.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,94 @@ +<?php + +namespace Drupal\system\Tests\Routing; + +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\Routing\Exception\RouteNotFoundException; +use Symfony\Component\Routing\RouteCollection; +use Drupal\Core\Routing\RouteProviderInterface; + +/** + * Easily configurable mock route provider. + */ +class MockRouteProvider implements RouteProviderInterface { + + /** + * A collection of routes for this route provider. + * + * @var RouteCollection + */ + protected $routes; + + /** + * Constructs a new MockRouteProvider. + * + * @param \Symfony\Component\Routing\RouteCollection $routes + * The route collection to use for this provider. + */ + public function __construct(RouteCollection $routes) { + $this->routes = $routes; + } + + /** + * Implements \Symfony\Cmf\Component\Routing\RouteProviderInterface::getRouteCollectionForRequest(). + * + * Simply return all routes to prevent + * \Symfony\Component\Routing\Exception\ResourceNotFoundException. + */ + public function getRouteCollectionForRequest(Request $request) { + return $this->routes; + } + + /** + * {@inheritdoc} + */ + public function getRouteByName($name) { + $routes = $this->getRoutesByNames([$name]); + if (empty($routes)) { + throw new RouteNotFoundException(sprintf('Route "%s" does not exist.', $name)); + } + + return reset($routes); + } + + /** + * {@inheritdoc} + */ + public function preLoadRoutes($names) { + // Nothing to do. + } + + /** + * {@inheritdoc} + */ + public function getRoutesByNames($names) { + $routes = []; + foreach ($names as $name) { + $routes[] = $this->routes->get($name); + } + + return $routes; + } + + /** + * {@inheritdoc} + */ + public function getRoutesByPattern($pattern) { + return new RouteCollection(); + } + + /** + * {@inheritdoc} + */ + public function getAllRoutes() { + return $this->routes->all(); + } + + /** + * {@inheritdoc} + */ + public function reset() { + $this->routes = []; + } + +}