improve testing by checking explicitly that collisions are not generated

This commit is contained in:
Asmir Mustafic 2021-08-16 08:29:17 +02:00
parent 478fb2efe0
commit 497afa1361
No known key found for this signature in database
GPG Key ID: 5408354D09CC64FC
3 changed files with 35 additions and 1 deletions

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();