From 87c31135cd3f65f04f614c5c99ee0a3b331cadbb Mon Sep 17 00:00:00 2001 From: Sipachev Igor Date: Wed, 28 Jul 2021 12:50:05 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D1=87=D0=B8=D0=BD=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/EventListener/RequestListener.php | 6 ++++-- tests/unit/Listener/FillTest.php | 6 +++--- .../unit/Listener/fixtures/FillTest/BuyRequest.php | 14 ++++++++++++++ .../unit/Listener/fixtures/FillTest/Controller.php | 9 +++++++++ 4 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 tests/unit/Listener/fixtures/FillTest/BuyRequest.php diff --git a/src/EventListener/RequestListener.php b/src/EventListener/RequestListener.php index da15a33..f1c516c 100644 --- a/src/EventListener/RequestListener.php +++ b/src/EventListener/RequestListener.php @@ -17,6 +17,8 @@ use Symfony\Component\Validator\Validation; // todo базовая заготовка. Требуется рефакторинг class RequestListener { + public const REQUEST_DATA = 'request_data'; + public function onKernelRequest(RequestEvent $event) { $request = $event->getRequest(); @@ -25,7 +27,7 @@ class RequestListener $controller = explode('::', $controller); $method = new ReflectionMethod($controller[0], $controller[1]); } - if (is_callable($controller)){ + if (is_callable($controller)) { $method = new ReflectionMethod($controller[0], $controller[1]); } if (!isset($method)) { @@ -43,7 +45,7 @@ class RequestListener if ($errorCollection->hasErrors()) { $event->setResponse(new JsonResponse(['errors' => $errorCollection->format()], Response::HTTP_BAD_REQUEST)); } else { - $request->attributes->set($requestDTOInstance::class, $requestDTOInstance); + $request->attributes->set(self::REQUEST_DATA, $requestDTOInstance); } } } diff --git a/tests/unit/Listener/FillTest.php b/tests/unit/Listener/FillTest.php index 02ef8e6..b0c7592 100644 --- a/tests/unit/Listener/FillTest.php +++ b/tests/unit/Listener/FillTest.php @@ -18,7 +18,7 @@ use Symfony\Component\Routing\RouteCollection; use Rinsvent\RequestBundle\EventListener\RequestListener; -class GenerateTest extends \Codeception\Test\Unit +class FillTest extends \Codeception\Test\Unit { /** * @var \UnitTester @@ -34,14 +34,14 @@ class GenerateTest extends \Codeception\Test\Unit } // tests - public function testGenerateEnum() + public function testSuccessFillRequestData() { $request = Request::create('/hello/igor', 'GET', [ 'surname' => 'Surname' ]); $response = $this->send($request); - $this->assertEquals(3, $request->get('form')); + $this->assertEquals('Surname', $request->get(RequestListener::REQUEST_DATA)->surname); } private function send(Request $request): Response diff --git a/tests/unit/Listener/fixtures/FillTest/BuyRequest.php b/tests/unit/Listener/fixtures/FillTest/BuyRequest.php new file mode 100644 index 0000000..a83b015 --- /dev/null +++ b/tests/unit/Listener/fixtures/FillTest/BuyRequest.php @@ -0,0 +1,14 @@ +get('name')) ); } + + #[RequestDTO(className: HelloRequest::class, jsonPath: '$.user')] + #[RequestDTO(className: BuyRequest::class, jsonPath: '$.guest')] + public function hello2(Request $request) + { + return new Response( + sprintf("Hello %s", $request->get('name')) + ); + } }