From 2cc6d4d681a116fb396ce520cac01cafc023c183 Mon Sep 17 00:00:00 2001 From: valentin v / vvval Date: Wed, 2 Aug 2017 19:01:24 +0300 Subject: [PATCH] pr / checker condition --- source/Spiral/Http/Request/RequestFilter.php | 20 +++++++++++++ tests/Http/RequestFilters/DemoRequestTest.php | 28 +++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/source/Spiral/Http/Request/RequestFilter.php b/source/Spiral/Http/Request/RequestFilter.php index e50913778..beca24048 100644 --- a/source/Spiral/Http/Request/RequestFilter.php +++ b/source/Spiral/Http/Request/RequestFilter.php @@ -162,4 +162,24 @@ protected function getSchema(): array return static::SCHEMA; } + + /** + * Pass context to validator. + * + * @param mixed $context + */ + public function setContext($context) + { + $this->getValidator()->setContext($context); + } + + /** + * Get context from validator. + * + * @return mixed + */ + public function getContext() + { + return $this->getValidator()->getContext(); + } } \ No newline at end of file diff --git a/tests/Http/RequestFilters/DemoRequestTest.php b/tests/Http/RequestFilters/DemoRequestTest.php index 6717ebdc8..8896c4343 100644 --- a/tests/Http/RequestFilters/DemoRequestTest.php +++ b/tests/Http/RequestFilters/DemoRequestTest.php @@ -207,4 +207,32 @@ public function testValid() $request->name = $name; $this->assertTrue($request->isValid(true)); } + + public function testContext() + { + $serverRequest = new ServerRequest(); + $serverRequest = $serverRequest->withParsedBody([ + 'name' => 'Anton', + 'address' => [ + 'countryCode' => '', + 'city' => 'San Francisco', + 'address' => 'Some street' + ], + 'files' => [ + //Iterating over data + 0 => [ + 'label' => 'Some label' + ] + ] + ]); + $this->container->bind(ServerRequestInterface::class, $serverRequest); + /** @var DemoRequest $request */ + $request = $this->container->get(DemoRequest::class); + + $context = new \stdClass(); + $context->data = 'some context'; + $request->setContext($context); + + $this->assertEquals($context, $request->getContext()); + } }