Skip to content

Commit c035f01

Browse files
authored
[Modifiers]: Date filter wrong parameters (#346)
* fix: date filter * fix: unit tests * fix: unit tests
1 parent 80e1ecf commit c035f01

File tree

3 files changed

+48
-19
lines changed

3 files changed

+48
-19
lines changed

src/Model/DefaultSearch/Query/DateFilter.php

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -98,24 +98,19 @@ public function isEmpty(): bool
9898

9999
public function getParams(): array
100100
{
101-
$params = [
102-
'format' => "yyyy-MM-dd'T'HH:mm:ssz",
103-
];
101+
$params = ['format' => "yyyy-MM-dd'T'HH:mm:ssz"];
102+
104103
if ($this->onDate) {
105104
$params['gte'] = $this->getStartOfDay($this->onDate)->format(DateTimeInterface::ATOM);
106105
$params['lte'] = $this->getEndOfDay($this->onDate)->format(DateTimeInterface::ATOM);
107-
} else {
108-
if ($this->startDate) {
109-
$params['gte'] = $this->getStartOfDay($this->startDate)->format(DateTimeInterface::ATOM);
110-
}
111-
if ($this->endDate) {
112-
$params['lte'] = $this->getEndOfDay($this->endDate)->format(DateTimeInterface::ATOM);
113-
}
106+
107+
return [$this->field => $params];
114108
}
115109

116-
return [
117-
$this->field => $params,
118-
];
110+
$params = $this->addStartParams($params);
111+
$params = $this->addEndParams($params);
112+
113+
return [$this->field => $params];
119114
}
120115

121116
public function toArray(bool $withType = false): array
@@ -162,6 +157,40 @@ public function getOnDate(): Carbon
162157
return $this->onDate;
163158
}
164159

160+
private function addStartParams(array $params): array
161+
{
162+
if (!$this->startDate) {
163+
return $params;
164+
}
165+
166+
if ($this->endDate) {
167+
$params['gte'] = $this->getStartOfDay($this->startDate)->format(DateTimeInterface::ATOM);
168+
169+
return $params;
170+
}
171+
172+
$params['gte'] = $this->getEndOfDay($this->startDate)->format(DateTimeInterface::ATOM);
173+
174+
return $params;
175+
}
176+
177+
private function addEndParams(array $params): array
178+
{
179+
if (!$this->endDate) {
180+
return $params;
181+
}
182+
183+
if ($this->startDate) {
184+
$params['lte'] = $this->getEndOfDay($this->endDate)->format(DateTimeInterface::ATOM);
185+
186+
return $params;
187+
}
188+
189+
$params['lte'] = $this->getStartOfDay($this->endDate)->format(DateTimeInterface::ATOM);
190+
191+
return $params;
192+
}
193+
165194
private function getStartOfDay(Carbon $date): Carbon
166195
{
167196
if (!$this->roundToDay) {

tests/Unit/Model/DefaultSearch/Query/DateFilterTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public function testToArray(): void
5858
'range' => [
5959
'datefield' => [
6060
'format' => "yyyy-MM-dd'T'HH:mm:ssz",
61-
'gte' => '2000-01-01T00:00:00+00:00',
61+
'gte' => '2000-01-01T23:59:59+00:00',
6262
],
6363
],
6464
], $dateFilter->toArray(true));
@@ -69,7 +69,7 @@ public function testToArray(): void
6969
'range' => [
7070
'datefield' => [
7171
'format' => "yyyy-MM-dd'T'HH:mm:ssz",
72-
'lte' => '2000-01-01T23:59:59+00:00',
72+
'lte' => '2000-01-01T00:00:00+00:00',
7373
],
7474
],
7575
], $dateFilter->toArray(true));
@@ -111,7 +111,7 @@ public function testGetParams(): void
111111
self::assertSame([
112112
'datefield' => [
113113
'format' => "yyyy-MM-dd'T'HH:mm:ssz",
114-
'gte' => '2000-01-01T00:00:00+00:00',
114+
'gte' => '2000-01-01T23:59:59+00:00',
115115
],
116116
], $dateFilter->getParams());
117117

@@ -120,7 +120,7 @@ public function testGetParams(): void
120120
self::assertSame([
121121
'datefield' => [
122122
'format' => "yyyy-MM-dd'T'HH:mm:ssz",
123-
'lte' => '2000-01-01T23:59:59+00:00',
123+
'lte' => '2000-01-01T00:00:00+00:00',
124124
],
125125
], $dateFilter->getParams());
126126

tests/Unit/SearchIndexAdapter/Asset/FieldDefinitionAdapter/DateAdapterTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public function testApplySearchFilter()
126126
'range' => [
127127
'standard_fields.test.en' => [
128128
'format' => "yyyy-MM-dd'T'HH:mm:ssz",
129-
'gte' => '2000-01-01T00:00:00+00:00',
129+
'gte' => '2000-01-01T23:59:59+00:00',
130130
],
131131
],
132132
],
@@ -141,7 +141,7 @@ public function testApplySearchFilter()
141141
'range' => [
142142
'standard_fields.test.en' => [
143143
'format' => "yyyy-MM-dd'T'HH:mm:ssz",
144-
'lte' => '2000-01-01T23:59:59+00:00',
144+
'lte' => '2000-01-01T00:00:00+00:00',
145145
],
146146
],
147147
],

0 commit comments

Comments
 (0)