Skip to content

Commit f8206c4

Browse files
committed
Merge branch '2.1' into 2.2
2 parents 8e30e66 + dab2eb7 commit f8206c4

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

src/Bridge/Doctrine/Orm/Filter/DateFilter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ protected function filterProperty(string $property, $values, QueryBuilder $query
167167
protected function addWhere(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $alias, string $field, string $operator, string $value, string $nullManagement = null, $type = null)
168168
{
169169
try {
170-
$value = false !== strpos('_immutable', $type) ? new \DateTime($value) : new \DateTimeImmutable($value);
170+
$value = false === strpos($type, '_immutable') ? new \DateTime($value) : new \DateTimeImmutable($value);
171171
} catch (\Exception $e) {
172172
// Silently ignore this filter if it can not be transformed to a \DateTime
173173
$this->logger->notice('Invalid filter ignored', [

tests/Bridge/Doctrine/Orm/Filter/DateFilterTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGenerator;
1818
use ApiPlatform\Core\Tests\Fixtures\TestBundle\Entity\Dummy;
1919
use ApiPlatform\Core\Tests\Fixtures\TestBundle\Entity\DummyDate;
20+
use ApiPlatform\Core\Tests\Fixtures\TestBundle\Entity\DummyImmutableDate;
21+
use Doctrine\Common\Persistence\ManagerRegistry;
22+
use Doctrine\ORM\EntityRepository;
23+
use Symfony\Bridge\Doctrine\Test\DoctrineTestHelper;
24+
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
2025
use Symfony\Component\HttpFoundation\Request;
2126
use Symfony\Component\HttpFoundation\RequestStack;
2227

@@ -57,6 +62,31 @@ private function doTestApplyDate(bool $request)
5762
$filter->apply($queryBuilder, new QueryNameGenerator(), DummyDate::class, null, $request ? [] : ['filters' => $filters]);
5863

5964
$this->assertEquals(new \DateTime('2015-04-05'), $queryBuilder->getParameters()[0]->getValue());
65+
$this->assertInstanceOf(\DateTime::class, $queryBuilder->getParameters()[0]->getValue());
66+
}
67+
68+
public function testApplyDateImmutable()
69+
{
70+
$request = Request::create('/api/dummy_immutable_dates', 'GET', [
71+
'dummyDate' => [
72+
'after' => '2015-04-05',
73+
],
74+
]);
75+
$requestStack = new RequestStack();
76+
$requestStack->push($request);
77+
78+
$queryBuilder = $this->repository->createQueryBuilder('o');
79+
80+
$filter = new DateFilter(
81+
$this->managerRegistry,
82+
$requestStack,
83+
null,
84+
['dummyDate' => null]
85+
);
86+
87+
$filter->apply($queryBuilder, new QueryNameGenerator(), DummyImmutableDate::class);
88+
$this->assertEquals(new \DateTimeImmutable('2015-04-05'), $queryBuilder->getParameters()[0]->getValue());
89+
$this->assertInstanceOf(\DateTimeImmutable::class, $queryBuilder->getParameters()[0]->getValue());
6090
}
6191

6292
public function testGetDescription()

0 commit comments

Comments
 (0)