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.
*
* @var string[]
*
* @Serializer\Type("array<string>")
* @Serializer\Accessor(getter="getRoles", setter="setRoles")
* @Serializer\Expose

View File

@ -237,7 +237,7 @@ class JMSFunctionalTest extends WebTestCase
'type' => 'integer',
],
'complex' => [
'$ref' => '#/components/schemas/JMSComplex2',
'$ref' => '#/components/schemas/JMSComplexDefault',
],
'user' => [
'$ref' => '#/components/schemas/JMSUser',
@ -306,6 +306,17 @@ class JMSFunctionalTest extends WebTestCase
], 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()
{
$this->assertEquals([

View File

@ -18,6 +18,7 @@ use Hateoas\Configuration\Embedded;
use JMS\SerializerBundle\JMSSerializerBundle;
use Nelmio\ApiDocBundle\NelmioApiDocBundle;
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\PrivateProtectedExposure;
use Nelmio\ApiDocBundle\Tests\Functional\ModelDescriber\VirtualTypeClassDoesNotExistsHandlerDefinedDescriber;
@ -248,6 +249,20 @@ class TestKernel extends Kernel
'type' => BazingaUser::class,
'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();
}
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
{
$api = $this->getOpenApiDefinition();