Skip to content
Snippets Groups Projects
Commit 92d0783f authored by Mathias Brodala's avatar Mathias Brodala
Browse files

[BUGFIX] Properly validate DateTimeImmutable objects

Change-Id: I29159e835d362e3f0e06c2145e84c1119df152cf
Resolves: #85083
Releases: master, 8.7
Reviewed-on: https://review.typo3.org/57054


Tested-by: default avatarTYPO3com <no-reply@typo3.com>
Reviewed-by: default avatarWouter Wolters <typo3@wouterwolters.nl>
Tested-by: default avatarWouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: default avatarMathias Brodala <mbrodala@pagemachine.de>
Tested-by: default avatarMathias Brodala <mbrodala@pagemachine.de>
parent 74f46b02
Branches
Tags
No related merge requests found
......@@ -15,7 +15,7 @@ namespace TYPO3\CMS\Extbase\Validation\Validator;
*/
/**
* Validator for DateTime objects.
* Validator for DateTime/DateTimeImmutable objects.
*
* @api
*/
......@@ -30,7 +30,7 @@ class DateTimeValidator extends AbstractValidator
public function isValid($value)
{
$this->result->clear();
if ($value instanceof \DateTime) {
if ($value instanceof \DateTimeInterface) {
return;
}
$this->addError(
......
<?php
declare(strict_types = 1);
namespace TYPO3\CMS\Extbase\Tests\Unit\Validation\Validator;
/* *
* This script belongs to the Extbase framework. *
* *
* It is free software; you can redistribute it and/or modify it under *
* the terms of the GNU Lesser General Public License as published by the *
* Free Software Foundation, either version 3 of the License, or (at your *
* option) any later version. *
* *
* This script is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- *
* TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser *
* General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with the script. *
* If not, see http://www.gnu.org/licenses/lgpl.html *
* *
* The TYPO3 project - inspiring people to share! *
* */
use TYPO3\CMS\Extbase\Validation\Validator\DateTimeValidator;
use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
/**
* Test case
*/
class DateTimeValidatorTest extends UnitTestCase
{
/**
* @test
* @dataProvider dateTimeValues
*/
public function acceptsDateTimeValues($value)
{
$validator = new DateTimeValidator();
$result = $validator->validate($value);
$this->assertFalse($result->hasErrors());
}
/**
* @return array
*/
public function dateTimeValues(): array
{
return [
\DateTime::class => [
new \DateTime(),
],
'Extended ' . \DateTime::class => [
new class extends \DateTime {
},
],
\DateTimeImmutable::class => [
new \DateTimeImmutable(),
],
'Extended ' . \DateTimeImmutable::class => [
new class extends \DateTimeImmutable {
},
],
];
}
/**
* @test
*/
public function addsErrorForInvalidValue()
{
$validator = $this->getMockBuilder(DateTimeValidator::class)
->setMethods(['translateErrorMessage'])
->getMock();
$result = $validator->validate(false);
$this->assertTrue($result->hasErrors());
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment