NelmioApiDocBundle/Tests/Functional/BazingaFunctionalTest.php
Filip Benčo 78664ef9ec
OpenApi 3 Support (#1623)
* Initial pass for OA3 upgrade

* Fix Util Tests

* Fix first batch of Unit Tests. Up to Model

* Another batch of fixed tests

* Update annotations

* Convert Model & Property Describers

* Update tests, Fix RouteDescribers, FIx additional bugs

* Another batch of updates

* Another batch of fixed Functional Tests

* Fix FunctionalTest tests

* Fix Bazinga Tests

* FIx FOS Rest

* Fix JMS TEsts & describers

* Fix all Tests

* Fix few stuff from own CR

* CS Fixes

* CS Fixes 2

* CS Fixes 3

* CS Fixes 4

* Remove collection bug

* Updates after first CRs

* CS

* Drop support for SF3

* Update the docs

* Add an upgrade guide

* misc doc fixes

* Configurable media types

* Code Style Fixes

* Don't use ::$ref for @Response and @RequestBody

* Fix upgrading guide

* Fix OA case

Co-authored-by: Filip Benčo <filip.benco@websupport.sk>
Co-authored-by: Guilhem Niot <guilhem.niot@gmail.com>
Co-authored-by: Mantis Development <mantis@users.noreply.github.com>
2020-05-28 13:19:11 +02:00

131 lines
4.2 KiB
PHP

<?php
/*
* This file is part of the NelmioApiDocBundle package.
*
* (c) Nelmio
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Nelmio\ApiDocBundle\Tests\Functional;
use Hateoas\Configuration\Embedded;
class BazingaFunctionalTest extends WebTestCase
{
protected function setUp()
{
parent::setUp();
static::createClient([], ['HTTP_HOST' => 'api.example.com']);
}
public function testModelComplexDocumentationBazinga()
{
$this->assertEquals([
'type' => 'object',
'properties' => [
'_links' => [
'readOnly' => true,
'properties' => [
'example' => [
'properties' => [
'href' => [
'type' => 'string',
],
'str_att' => [
'type' => 'string',
'default' => 'bar',
],
'float_att' => [
'type' => 'number',
'default' => 5.6,
],
'bool_att' => [
'type' => 'boolean',
'default' => false,
],
],
'type' => 'object',
],
'route' => [
'properties' => [
'href' => [
'type' => 'string',
],
],
'type' => 'object',
],
],
],
'_embedded' => [
'readOnly' => true,
'properties' => [
'route' => [
'type' => 'object',
],
'embed_with_group' => [
'type' => 'object',
],
],
],
],
'schema' => 'BazingaUser',
], json_decode($this->getModel('BazingaUser')->toJson(), true));
}
public function testWithGroup()
{
$this->assertEquals([
'type' => 'object',
'properties' => [
'_embedded' => [
'readOnly' => true,
'properties' => [
'embed_with_group' => [
'type' => 'object',
],
],
],
],
'schema' => 'BazingaUser_grouped',
], json_decode($this->getModel('BazingaUser_grouped')->toJson(), true));
}
public function testWithType()
{
try {
new \ReflectionMethod(Embedded::class, 'getType');
} catch (\ReflectionException $e) {
$this->markTestSkipped('Typed embedded properties require at least willdurand/hateoas 3.0');
}
$this->assertEquals([
'type' => 'object',
'properties' => [
'_embedded' => [
'readOnly' => true,
'properties' => [
'typed_bazinga_users' => [
'items' => [
'$ref' => '#/components/schemas/BazingaUser',
],
'type' => 'array',
],
'typed_bazinga_name' => [
'type' => 'string',
],
],
],
],
'schema' => 'BazingaUserTyped',
], json_decode($this->getModel('BazingaUserTyped')->toJson(), true));
}
protected static function createKernel(array $options = [])
{
return new TestKernel(true, true);
}
}