diff --git a/ModelDescriber/DateTimeModelDescriber.php b/ModelDescriber/DateTimeModelDescriber.php new file mode 100644 index 0000000..36fbfaa --- /dev/null +++ b/ModelDescriber/DateTimeModelDescriber.php @@ -0,0 +1,29 @@ +setType('string'); + $schema->setFormat('date-time'); + } + + public function supports(Model $model): bool + { + return 'DateTime' === $model->getType()->getClassName() || 'DateTimeImmutable' === $model->getType()->getClassName(); + } +} diff --git a/Resources/config/services.xml b/Resources/config/services.xml index 2fa25bd..81bdaba 100644 --- a/Resources/config/services.xml +++ b/Resources/config/services.xml @@ -56,6 +56,10 @@ + + + + diff --git a/Tests/Functional/Entity/User.php b/Tests/Functional/Entity/User.php index 39fb774..ff69567 100644 --- a/Tests/Functional/Entity/User.php +++ b/Tests/Functional/Entity/User.php @@ -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) { } diff --git a/Tests/Functional/FunctionalTest.php b/Tests/Functional/FunctionalTest.php index 1d99632..c0e71ec 100644 --- a/Tests/Functional/FunctionalTest.php +++ b/Tests/Functional/FunctionalTest.php @@ -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() diff --git a/Tests/Functional/JMSFunctionalTest.php b/Tests/Functional/JMSFunctionalTest.php index b11507a..1f111eb 100644 --- a/Tests/Functional/JMSFunctionalTest.php +++ b/Tests/Functional/JMSFunctionalTest.php @@ -11,8 +11,6 @@ namespace Nelmio\ApiDocBundle\Tests\Functional; -use JMS\SerializerBundle\JMSSerializerBundle; - class JMSFunctionalTest extends WebTestCase { public function testModelDocumentation()