Merge pull request #1028 from nelmio/datetime

Add DateTime support
This commit is contained in:
Guilhem Niot 2017-07-25 10:40:06 +02:00 committed by GitHub
commit 05bf7b54c0
5 changed files with 56 additions and 3 deletions

View File

@ -0,0 +1,29 @@
<?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\ModelDescriber;
use EXSyst\Component\Swagger\Schema;
use Nelmio\ApiDocBundle\Model\Model;
class DateTimeModelDescriber implements ModelDescriberInterface
{
public function describe(Model $model, Schema $schema)
{
$schema->setType('string');
$schema->setFormat('date-time');
}
public function supports(Model $model): bool
{
return 'DateTime' === $model->getType()->getClassName() || 'DateTimeImmutable' === $model->getType()->getClassName();
}
}

View File

@ -56,6 +56,10 @@
<tag name="nelmio_api_doc.model_describer" />
</service>
<service id="nelmio_api_doc.model_describers.datetime" class="Nelmio\ApiDocBundle\ModelDescriber\DateTimeModelDescriber" public="false">
<tag name="nelmio_api_doc.model_describer" priority="100" />
</service>
<service id="nelmio_api_doc.model_describers.collection" class="Nelmio\ApiDocBundle\ModelDescriber\CollectionModelDescriber" public="false">
<tag name="nelmio_api_doc.model_describer" />
</service>

View File

@ -16,7 +16,21 @@ namespace Nelmio\ApiDocBundle\Tests\Functional\Entity;
*/
class User
{
public function addUsers(User $user)
/**
* @var \DateTime
*/
private $createdAt;
/**
* @var User[]
*/
private $users;
public function setCreatedAt(\DateTime $createAt)
{
}
public function setUsers(array $users)
{
}

View File

@ -150,12 +150,20 @@ class FunctionalTest extends WebTestCase
$model = $this->getModel('User');
$this->assertEquals('object', $model->getType());
$properties = $model->getProperties();
$this->assertCount(3, $properties);
$this->assertTrue($properties->has('users'));
$this->assertEquals('#/definitions/User[]', $properties->get('users')->getRef());
$this->assertTrue($properties->has('dummy'));
$this->assertEquals('#/definitions/Dummy2', $properties->get('dummy')->getRef());
$this->assertTrue($properties->has('createdAt'));
$this->assertEquals('#/definitions/DateTime', $properties->get('createdAt')->getRef());
$model = $this->getModel('DateTime');
$this->assertEquals('string', $model->getType());
$this->assertEquals('date-time', $model->getFormat());
}
public function testUsersModel()

View File

@ -11,8 +11,6 @@
namespace Nelmio\ApiDocBundle\Tests\Functional;
use JMS\SerializerBundle\JMSSerializerBundle;
class JMSFunctionalTest extends WebTestCase
{
public function testModelDocumentation()