From 412eff98050a80a22317760aed71135600ac139d Mon Sep 17 00:00:00 2001 From: Guilhem Niot Date: Tue, 3 Nov 2020 10:10:31 +0100 Subject: [PATCH] Test the support of QueryParam::$map --- Tests/Functional/Controller/FOSRestController.php | 1 + Tests/Functional/FOSRestTest.php | 3 +++ Tests/Functional/WebTestCase.php | 10 ++++++---- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Tests/Functional/Controller/FOSRestController.php b/Tests/Functional/Controller/FOSRestController.php index 5751b02..ada65d4 100644 --- a/Tests/Functional/Controller/FOSRestController.php +++ b/Tests/Functional/Controller/FOSRestController.php @@ -25,6 +25,7 @@ class FOSRestController /** * @Route("/fosrest.{_format}", methods={"POST"}) * @QueryParam(name="foo", requirements=@Regex("/^\d+$/")) + * @QueryParam(name="mapped", map=true) * @RequestParam(name="Barraa", key="bar", requirements="\d+") * @RequestParam(name="baz", requirements=@IsTrue) */ diff --git a/Tests/Functional/FOSRestTest.php b/Tests/Functional/FOSRestTest.php index 71d28d3..7c9c5a3 100644 --- a/Tests/Functional/FOSRestTest.php +++ b/Tests/Functional/FOSRestTest.php @@ -39,6 +39,9 @@ class FOSRestTest extends WebTestCase $this->assertEquals('\d+', $fooParameter->schema->pattern); $this->assertEquals(OA\UNDEFINED, $fooParameter->schema->format); + $mappedParameter = $this->getParameter($operation, 'mapped[]', 'query'); + $this->assertTrue($mappedParameter->explode); + $barProperty = $this->getProperty($bodySchema, 'bar'); $this->assertEquals('\d+', $barProperty->pattern); $this->assertEquals(OA\UNDEFINED, $barProperty->format); diff --git a/Tests/Functional/WebTestCase.php b/Tests/Functional/WebTestCase.php index e35a3ae..5fd0ba6 100644 --- a/Tests/Functional/WebTestCase.php +++ b/Tests/Functional/WebTestCase.php @@ -116,10 +116,12 @@ class WebTestCase extends BaseWebTestCase public function assertHasParameter($name, $in, OA\AbstractAnnotation $annotation) { /* @var OA\Operation|OA\OpenApi $annotation */ - $parameters = array_column(OA\UNDEFINED !== $annotation->parameters ? $annotation->parameters : [], 'name', 'in'); - static::assertContains( - $name, - $parameters[$in] ?? [], + $parameters = array_filter(OA\UNDEFINED !== $annotation->parameters ? $annotation->parameters : [], function (OA\Parameter $parameter) use ($name, $in) { + return $parameter->name === $name && $parameter->in === $in; + }); + + static::assertNotEmpty( + $parameters, sprintf('Failed asserting that parameter "%s" in "%s" does exist.', $name, $in) ); }