diff --git a/ModelDescriber/JMSModelDescriber.php b/ModelDescriber/JMSModelDescriber.php index 45ef620..f3b1057 100644 --- a/ModelDescriber/JMSModelDescriber.php +++ b/ModelDescriber/JMSModelDescriber.php @@ -72,6 +72,12 @@ class JMSModelDescriber implements ModelDescriberInterface, ModelRegistryAwareIn $groups = $model->getGroups(); if (isset($groups[$name]) && is_array($groups[$name])) { $groups = $model->getGroups()[$name]; + } elseif (is_array($groups)) { + $groups = array_filter($groups, 'is_scalar'); + } + + if ([GroupsExclusionStrategy::DEFAULT_GROUP] === $groups) { + $groups = null; } // read property options from Swagger Property annotation if it exists diff --git a/Tests/Functional/Controller/JMSController.php b/Tests/Functional/Controller/JMSController.php index 7294d32..0e361c6 100644 --- a/Tests/Functional/Controller/JMSController.php +++ b/Tests/Functional/Controller/JMSController.php @@ -13,6 +13,7 @@ namespace Nelmio\ApiDocBundle\Tests\Functional\Controller; use Nelmio\ApiDocBundle\Annotation\Model; use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSComplex; +use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSDualComplex; use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSUser; use Nelmio\ApiDocBundle\Tests\Functional\Entity\VirtualProperty; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; @@ -58,4 +59,16 @@ class JMSController public function complexAction() { } + + /** + * @Route("/api/jms_complex_dual", methods={"GET"}) + * @SWG\Response( + * response=200, + * description="Success", + * @Model(type=JMSDualComplex::class, groups={"Default", "complex" : {"user" : {"details"}}}) + * ) + */ + public function complexDualAction() + { + } } diff --git a/Tests/Functional/Entity/JMSDualComplex.php b/Tests/Functional/Entity/JMSDualComplex.php new file mode 100644 index 0000000..4fa72db --- /dev/null +++ b/Tests/Functional/Entity/JMSDualComplex.php @@ -0,0 +1,34 @@ +getModel('JMSUser')->toArray()); } + public function testModelComplexDualDocumentation() + { + $this->assertEquals([ + 'type' => 'object', + 'properties' => [ + 'id' => [ + 'type' => 'integer', + ], + 'complex' => [ + '$ref' => '#/definitions/JMSComplex2', + ], + 'user' => [ + '$ref' => '#/definitions/JMSUser', + ], + ], + ], $this->getModel('JMSDualComplex')->toArray()); + } + public function testModelComplexDocumentation() { $this->assertEquals([