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