Code improvements and add unit test

This commit is contained in:
Thomas Lallement 2021-03-16 10:40:12 +01:00
parent f2c75ebc9d
commit 7f9b00d620
3 changed files with 15 additions and 1 deletions

View File

@ -107,7 +107,12 @@ final class FosRestDescriber implements RouteDescriberInterface
if ($requirements instanceof Constraint && !$requirements instanceof Regex) {
if ($requirements instanceof DateTime) {
return 'date-time';
// As defined per RFC3339
if ($requirements->format === 'Y-m-d\TH:i:s') {
return 'date-time';
} else if ($requirements->format === 'Y-m-d') {
return 'date';
}
}
$reflectionClass = new \ReflectionClass($requirements);

View File

@ -14,6 +14,7 @@ namespace Nelmio\ApiDocBundle\Tests\Functional\Controller;
use FOS\RestBundle\Controller\Annotations\QueryParam;
use FOS\RestBundle\Controller\Annotations\RequestParam;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Constraints\DateTime;
use Symfony\Component\Validator\Constraints\IsTrue;
use Symfony\Component\Validator\Constraints\Regex;
@ -28,6 +29,8 @@ class FOSRestController
* @QueryParam(name="mapped", map=true)
* @RequestParam(name="Barraa", key="bar", requirements="\d+")
* @RequestParam(name="baz", requirements=@IsTrue)
* @RequestParam(name="datetime", requirements=@DateTime("Y-m-d\TH:i:s"))
* @RequestParam(name="date", requirements=@DateTime("Y-m-d"))
*/
public function fosrestAction()
{

View File

@ -50,6 +50,12 @@ class FOSRestTest extends WebTestCase
$this->assertEquals(OA\UNDEFINED, $bazProperty->pattern);
$this->assertEquals('IsTrue', $bazProperty->format);
$barProperty = $this->getProperty($bodySchema, 'datetime');
$this->assertEquals('date-time', $barProperty->format);
$barProperty = $this->getProperty($bodySchema, 'date');
$this->assertEquals('date', $barProperty->format);
// The _format path attribute should be removed
$this->assertNotHasParameter('_format', 'path', $operation);
}