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 Constraint && !$requirements instanceof Regex) {
if ($requirements instanceof DateTime) { 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); $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\QueryParam;
use FOS\RestBundle\Controller\Annotations\RequestParam; use FOS\RestBundle\Controller\Annotations\RequestParam;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Constraints\DateTime;
use Symfony\Component\Validator\Constraints\IsTrue; use Symfony\Component\Validator\Constraints\IsTrue;
use Symfony\Component\Validator\Constraints\Regex; use Symfony\Component\Validator\Constraints\Regex;
@ -28,6 +29,8 @@ class FOSRestController
* @QueryParam(name="mapped", map=true) * @QueryParam(name="mapped", map=true)
* @RequestParam(name="Barraa", key="bar", requirements="\d+") * @RequestParam(name="Barraa", key="bar", requirements="\d+")
* @RequestParam(name="baz", requirements=@IsTrue) * @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() public function fosrestAction()
{ {

View File

@ -50,6 +50,12 @@ class FOSRestTest extends WebTestCase
$this->assertEquals(OA\UNDEFINED, $bazProperty->pattern); $this->assertEquals(OA\UNDEFINED, $bazProperty->pattern);
$this->assertEquals('IsTrue', $bazProperty->format); $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 // The _format path attribute should be removed
$this->assertNotHasParameter('_format', 'path', $operation); $this->assertNotHasParameter('_format', 'path', $operation);
} }