Small fixes for RFC3339 and new assertion

This commit is contained in:
tlallement 2021-03-24 18:01:32 +01:00
parent a72588861f
commit 0e7ebe5650
3 changed files with 8 additions and 2 deletions
RouteDescriber
Tests/Functional

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

@ -29,8 +29,9 @@ 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="datetime", requirements=@DateTime("Y-m-d\TH:i:sP"))
* @RequestParam(name="datetimeAlt", requirements=@DateTime("c"))
* @RequestParam(name="datetimeNoFormat", requirements=@DateTime())
* @RequestParam(name="date", requirements=@DateTime("Y-m-d"))
*/
public function fosrestAction()

@ -56,6 +56,9 @@ class FOSRestTest extends WebTestCase
$dateTimeAltProperty = $this->getProperty($bodySchema, 'datetimeAlt');
$this->assertEquals('date-time', $dateTimeAltProperty->format);
$dateTimeNoFormatProperty = $this->getProperty($bodySchema, 'datetimeNoFormat');
$this->assertEquals(OA\UNDEFINED, $dateTimeNoFormatProperty->format);
$dateProperty = $this->getProperty($bodySchema, 'date');
$this->assertEquals('date', $dateProperty->format);