diff --git a/src/EventListener/RequestListener.php b/src/EventListener/RequestListener.php index 5ef6a32..22d4b18 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(); @@ -39,7 +41,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 f646670..085c04d 100644 --- a/tests/unit/Listener/FillTest.php +++ b/tests/unit/Listener/FillTest.php @@ -19,7 +19,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 @@ -35,14 +35,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('Surname', $request->get(HelloRequest::class)->surname); + $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')) + ); + } }