@@ 202-243 (lines=42) @@ | ||
199 | ], $query->getParam('sort')); |
|
200 | } |
|
201 | ||
202 | public function testShouldAddNestedFilter() |
|
203 | { |
|
204 | $subscriber = new PaginateElasticaQuerySubscriber(); |
|
205 | $subscriber->setRequest(new Request(['ord' => 'owner.name'])); |
|
206 | ||
207 | $query = new Query(); |
|
208 | $adapter = $this->getAdapterMock(); |
|
209 | $adapter->method('getQuery') |
|
210 | ->willReturn($query); |
|
211 | ||
212 | $adapter->method('getResults') |
|
213 | ->willReturn($this->getResultSetMock()); |
|
214 | ||
215 | $event = new ItemsEvent(0, 10); |
|
216 | $event->target = $adapter; |
|
217 | $event->options = [ |
|
218 | 'defaultSortFieldName' => 'createdAt', |
|
219 | 'sortFieldParameterName' => 'ord', |
|
220 | 'sortDirectionParameterName' => 'az', |
|
221 | 'sortNestedPath' => 'owner', |
|
222 | 'sortNestedFilter' => new Query\Term(['enabled' => ['value' => true]]), |
|
223 | ]; |
|
224 | ||
225 | $subscriber->items($event); |
|
226 | $this->assertEquals([ |
|
227 | 'sort' => [ |
|
228 | 'owner.name' => [ |
|
229 | 'order' => 'asc', |
|
230 | 'ignore_unmapped' => true, |
|
231 | 'nested_path' => 'owner', |
|
232 | 'nested_filter' => [ |
|
233 | 'term' => [ |
|
234 | 'enabled' => ['value' => true] |
|
235 | ] |
|
236 | ] |
|
237 | ] |
|
238 | ], |
|
239 | 'query' => [ |
|
240 | 'match_all' => new \stdClass() |
|
241 | ] |
|
242 | ], $query->toArray()); |
|
243 | } |
|
244 | ||
245 | public function testShouldInvokeNestedFilterCallable() |
|
246 | { |
|
@@ 245-289 (lines=45) @@ | ||
242 | ], $query->toArray()); |
|
243 | } |
|
244 | ||
245 | public function testShouldInvokeNestedFilterCallable() |
|
246 | { |
|
247 | $subscriber = new PaginateElasticaQuerySubscriber(); |
|
248 | $subscriber->setRequest(new Request(['ord' => 'owner.name'])); |
|
249 | ||
250 | $query = new Query(); |
|
251 | $adapter = $this->getAdapterMock(); |
|
252 | $adapter->method('getQuery') |
|
253 | ->willReturn($query); |
|
254 | ||
255 | $adapter->method('getResults') |
|
256 | ->willReturn($this->getResultSetMock()); |
|
257 | ||
258 | $event = new ItemsEvent(0, 10); |
|
259 | $event->target = $adapter; |
|
260 | $event->options = [ |
|
261 | 'defaultSortFieldName' => 'createdAt', |
|
262 | 'sortFieldParameterName' => 'ord', |
|
263 | 'sortDirectionParameterName' => 'az', |
|
264 | 'sortNestedPath' => 'owner', |
|
265 | 'sortNestedFilter' => function ($sortField) { |
|
266 | $this->assertEquals('owner.name', $sortField); |
|
267 | return new Query\Term(['enabled' => ['value' => true]]); |
|
268 | }, |
|
269 | ]; |
|
270 | ||
271 | $subscriber->items($event); |
|
272 | $this->assertEquals([ |
|
273 | 'sort' => [ |
|
274 | 'owner.name' => [ |
|
275 | 'order' => 'asc', |
|
276 | 'ignore_unmapped' => true, |
|
277 | 'nested_path' => 'owner', |
|
278 | 'nested_filter' => [ |
|
279 | 'term' => [ |
|
280 | 'enabled' => ['value' => true] |
|
281 | ] |
|
282 | ] |
|
283 | ] |
|
284 | ], |
|
285 | 'query' => [ |
|
286 | 'match_all' => new \stdClass() |
|
287 | ] |
|
288 | ], $query->toArray()); |
|
289 | } |
|
290 | } |
|
291 |