Merge pull request #1861 from goetas/test-jms

Improve jms testing by checking that collisions are not generated
This commit is contained in:
Guilhem Niot 2021-08-16 16:40:54 +02:00 committed by GitHub
commit 6ebb9cc9b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 37 additions and 1 deletions

View File

@ -50,6 +50,8 @@ class JMSUser
/** /**
* User Roles Comment. * User Roles Comment.
* *
* @var string[]
*
* @Serializer\Type("array<string>") * @Serializer\Type("array<string>")
* @Serializer\Accessor(getter="getRoles", setter="setRoles") * @Serializer\Accessor(getter="getRoles", setter="setRoles")
* @Serializer\Expose * @Serializer\Expose

View File

@ -237,7 +237,7 @@ class JMSFunctionalTest extends WebTestCase
'type' => 'integer', 'type' => 'integer',
], ],
'complex' => [ 'complex' => [
'$ref' => '#/components/schemas/JMSComplex2', '$ref' => '#/components/schemas/JMSComplexDefault',
], ],
'user' => [ 'user' => [
'$ref' => '#/components/schemas/JMSUser', '$ref' => '#/components/schemas/JMSUser',
@ -306,6 +306,17 @@ class JMSFunctionalTest extends WebTestCase
], json_decode($this->getModel('VirtualProperty')->toJson(), true)); ], json_decode($this->getModel('VirtualProperty')->toJson(), true));
} }
public function testNoCollisionsAreGenerated()
{
self::assertFalse($this->hasModel('JMSComplex2'));
self::assertFalse($this->hasModel('JMSUser2'));
self::assertFalse($this->hasModel('JMSChatRoom2'));
self::assertFalse($this->hasModel('JMSChatRoomUser2'));
self::assertFalse($this->hasModel('JMSChatLivingRoom2'));
self::assertFalse($this->hasModel('JMSPicture2'));
}
public function testNamingStrategyWithConstraints() public function testNamingStrategyWithConstraints()
{ {
$this->assertEquals([ $this->assertEquals([

View File

@ -18,6 +18,7 @@ use Hateoas\Configuration\Embedded;
use JMS\SerializerBundle\JMSSerializerBundle; use JMS\SerializerBundle\JMSSerializerBundle;
use Nelmio\ApiDocBundle\NelmioApiDocBundle; use Nelmio\ApiDocBundle\NelmioApiDocBundle;
use Nelmio\ApiDocBundle\Tests\Functional\Entity\BazingaUser; use Nelmio\ApiDocBundle\Tests\Functional\Entity\BazingaUser;
use Nelmio\ApiDocBundle\Tests\Functional\Entity\JMSComplex;
use Nelmio\ApiDocBundle\Tests\Functional\Entity\NestedGroup\JMSPicture; use Nelmio\ApiDocBundle\Tests\Functional\Entity\NestedGroup\JMSPicture;
use Nelmio\ApiDocBundle\Tests\Functional\Entity\PrivateProtectedExposure; use Nelmio\ApiDocBundle\Tests\Functional\Entity\PrivateProtectedExposure;
use Nelmio\ApiDocBundle\Tests\Functional\ModelDescriber\VirtualTypeClassDoesNotExistsHandlerDefinedDescriber; use Nelmio\ApiDocBundle\Tests\Functional\ModelDescriber\VirtualTypeClassDoesNotExistsHandlerDefinedDescriber;
@ -248,6 +249,20 @@ class TestKernel extends Kernel
'type' => BazingaUser::class, 'type' => BazingaUser::class,
'groups' => ['foo'], 'groups' => ['foo'],
], ],
[
'alias' => 'JMSComplex',
'type' => JMSComplex::class,
'groups' => [
'list',
'details',
'User' => ['list'],
],
],
[
'alias' => 'JMSComplexDefault',
'type' => JMSComplex::class,
'groups' => null,
],
], ],
], ],
]); ]);

View File

@ -26,6 +26,14 @@ class WebTestCase extends BaseWebTestCase
return static::$kernel->getContainer()->get(sprintf('nelmio_api_doc.generator.%s', $area))->generate(); return static::$kernel->getContainer()->get(sprintf('nelmio_api_doc.generator.%s', $area))->generate();
} }
public function hasModel(string $name): bool
{
$api = $this->getOpenApiDefinition();
$key = array_search($name, array_column($api->components->schemas, 'schema'));
return false !== $key;
}
protected function getModel($name): OA\Schema protected function getModel($name): OA\Schema
{ {
$api = $this->getOpenApiDefinition(); $api = $this->getOpenApiDefinition();