Code Duplication    Length = 42-45 lines in 2 locations

Tests/Subscriber/PaginateElasticaQuerySubscriberTest.php 2 locations

@@ 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