From e04521ebea87fd8d8a545e6847772678cc28cda4 Mon Sep 17 00:00:00 2001 From: Fabiano Roberto Date: Tue, 30 Nov 2021 15:12:38 +0100 Subject: [PATCH] Fix usage of configureRoutes in tests --- Tests/Functional/Resources/routes.yaml | 40 ++++++++++++++++++++++++++ Tests/Functional/TestKernel.php | 37 +++++++++++++----------- 2 files changed, 61 insertions(+), 16 deletions(-) create mode 100644 Tests/Functional/Resources/routes.yaml diff --git a/Tests/Functional/Resources/routes.yaml b/Tests/Functional/Resources/routes.yaml new file mode 100644 index 0000000..0e118e9 --- /dev/null +++ b/Tests/Functional/Resources/routes.yaml @@ -0,0 +1,40 @@ +# Resources +test: + resource: ../Controller/TestController.php + type: annotation + +api: + resource: ../Controller/ApiController.php + type: annotation + +class_api: + resource: ../Controller/ClassApiController.php + type: annotation + +undocumented: + resource: ../Controller/UndocumentedController.php + type: annotation + +invokable: + resource: ../Controller/InvokableController.php + type: annotation + +fos_rest: + resource: ../Controller/FOSRestController.php + type: annotation + + +# Controllers +doc_area: + path: /docs/{area} + controller: nelmio_api_doc.controller.swagger_ui + defaults: + area: default + +doc_json: + path: /docs.json + controller: nelmio_api_doc.controller.swagger_json + +doc_yaml: + path: /docs.yaml + controller: nelmio_api_doc.controller.swagger_yaml \ No newline at end of file diff --git a/Tests/Functional/TestKernel.php b/Tests/Functional/TestKernel.php index 3f3f668..74de9ec 100644 --- a/Tests/Functional/TestKernel.php +++ b/Tests/Functional/TestKernel.php @@ -30,6 +30,7 @@ use Symfony\Component\Config\Loader\LoaderInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\HttpKernel\Kernel; +use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator; use Symfony\Component\Routing\RouteCollectionBuilder; use Symfony\Component\Serializer\Annotation\SerializedName; @@ -79,39 +80,43 @@ class TestKernel extends Kernel /** * {@inheritdoc} */ - protected function configureRoutes(RouteCollectionBuilder $routes) + protected function configureRoutes($routes) { - $routes->import(__DIR__.'/Controller/TestController.php', '/', 'annotation'); - $routes->import(__DIR__.'/Controller/ApiController.php', '/', 'annotation'); - $routes->import(__DIR__.'/Controller/ClassApiController.php', '/', 'annotation'); - $routes->import(__DIR__.'/Controller/UndocumentedController.php', '/', 'annotation'); - $routes->import(__DIR__.'/Controller/InvokableController.php', '/', 'annotation'); - $routes->import('', '/api', 'api_platform'); - $routes->add('/docs/{area}', 'nelmio_api_doc.controller.swagger_ui')->setDefault('area', 'default'); - $routes->add('/docs.json', 'nelmio_api_doc.controller.swagger_json'); - $routes->add('/docs.yaml', 'nelmio_api_doc.controller.swagger_yaml'); - $routes->import(__DIR__.'/Controller/FOSRestController.php', '/', 'annotation'); + $this->import($routes, '', '/api', 'api_platform'); + + $this->import($routes, __DIR__.'/Resources/routes.yaml', '/', 'yaml'); if (class_exists(SerializedName::class)) { - $routes->import(__DIR__.'/Controller/SerializedNameController.php', '/', 'annotation'); + $this->import($routes, __DIR__.'/Controller/SerializedNameController.php', '/', 'annotation'); } if ($this->flags & self::USE_JMS) { - $routes->import(__DIR__.'/Controller/JMSController.php', '/', 'annotation'); + $this->import($routes, __DIR__.'/Controller/JMSController.php', '/', 'annotation'); } if ($this->flags & self::USE_BAZINGA) { - $routes->import(__DIR__.'/Controller/BazingaController.php', '/', 'annotation'); + $this->import($routes, __DIR__.'/Controller/BazingaController.php', '/', 'annotation'); try { new \ReflectionMethod(Embedded::class, 'getType'); - $routes->import(__DIR__.'/Controller/BazingaTypedController.php', '/', 'annotation'); + $this->import($routes, __DIR__.'/Controller/BazingaTypedController.php', '/', 'annotation'); } catch (\ReflectionException $e) { } } if ($this->flags & self::ERROR_ARRAY_ITEMS) { - $routes->import(__DIR__.'/Controller/ArrayItemsErrorController.php', '/', 'annotation'); + $this->import($routes, __DIR__.'/Controller/ArrayItemsErrorController.php', '/', 'annotation'); + } + } + + /** + * BC for sf < 5.1. + */ + private function import($routes, $resource, $prefix, $type) { + if ($routes instanceof RoutingConfigurator) { + $routes->withPath($prefix)->import($resource, $type); + } else { + $routes->import($resource, $prefix, $type); } }