@@ -333,12 +333,46 @@ public static function provideQueryBuilderToMql(): iterable
333
333
]),
334
334
];
335
335
336
+
336
337
/** @see DatabaseQueryBuilderTest::testForPage() */
337
338
yield 'forPage ' => [
338
339
['find ' => [[], ['limit ' => 20 , 'skip ' => 40 ]]],
339
340
fn (Builder $ builder ) => $ builder ->forPage (3 , 20 ),
340
341
];
341
342
343
+ yield 'skip limit ' => [
344
+ ['find ' => [[], ['skip ' => 5 , 'limit ' => 10 ]]],
345
+ fn (Builder $ builder ) => $ builder ->offset (5 )->limit (10 ),
346
+ ];
347
+
348
+ /** @see DatabaseQueryBuilderTest::testLimitsAndOffsets() */
349
+ yield 'offset limit ' => [
350
+ ['find ' => [[], ['skip ' => 5 , 'limit ' => 10 ]]],
351
+ fn (Builder $ builder ) => $ builder ->offset (5 )->limit (10 ),
352
+ ];
353
+
354
+ yield 'offset 0 limit 0 ' => [
355
+ ['find ' => [[], []]],
356
+ fn (Builder $ builder ) => $ builder ->offset (0 )->limit (0 ),
357
+ ];
358
+
359
+ yield 'offset limit negative ' => [
360
+ ['find ' => [[], []]],
361
+ fn (Builder $ builder ) => $ builder ->offset (-5 )->limit (-10 ),
362
+ ];
363
+
364
+ yield 'offset limit null (reset) ' => [
365
+ ['find ' => [[], []]],
366
+ fn (Builder $ builder ) => $ builder
367
+ ->offset (5 )->limit (10 )
368
+ ->offset (null )->limit (null ),
369
+ ];
370
+
371
+ yield 'skip take (aliases) ' => [
372
+ ['find ' => [[], ['skip ' => 5 , 'limit ' => 10 ]]],
373
+ fn (Builder $ builder ) => $ builder ->skip (5 )->limit (10 ),
374
+ ];
375
+
342
376
/** @see DatabaseQueryBuilderTest::testOrderBys() */
343
377
yield 'orderBy multiple columns ' => [
344
378
['find ' => [[], ['sort ' => ['email ' => 1 , 'age ' => -1 ]]]],
@@ -544,6 +578,38 @@ function (Builder $builder) {
544
578
->select ('foo ' , 'bar ' ),
545
579
];
546
580
581
+ /** @see DatabaseQueryBuilderTest::testLatest() */
582
+ yield 'latest ' => [
583
+ ['find ' => [[], ['sort ' => ['created_at ' => -1 ]]]],
584
+ fn (Builder $ builder ) => $ builder ->latest (),
585
+ ];
586
+
587
+ yield 'latest limit ' => [
588
+ ['find ' => [[], ['sort ' => ['created_at ' => -1 ], 'limit ' => 1 ]]],
589
+ fn (Builder $ builder ) => $ builder ->latest ()->limit (1 ),
590
+ ];
591
+
592
+ yield 'latest custom field ' => [
593
+ ['find ' => [[], ['sort ' => ['updated_at ' => -1 ]]]],
594
+ fn (Builder $ builder ) => $ builder ->latest ('updated_at ' ),
595
+ ];
596
+
597
+ /** @see DatabaseQueryBuilderTest::testOldest() */
598
+ yield 'oldest ' => [
599
+ ['find ' => [[], ['sort ' => ['created_at ' => 1 ]]]],
600
+ fn (Builder $ builder ) => $ builder ->oldest (),
601
+ ];
602
+
603
+ yield 'oldest limit ' => [
604
+ ['find ' => [[], ['sort ' => ['created_at ' => 1 ], 'limit ' => 1 ]]],
605
+ fn (Builder $ builder ) => $ builder ->oldest ()->limit (1 ),
606
+ ];
607
+
608
+ yield 'oldest custom field ' => [
609
+ ['find ' => [[], ['sort ' => ['updated_at ' => 1 ]]]],
610
+ fn (Builder $ builder ) => $ builder ->oldest ('updated_at ' ),
611
+ ];
612
+
547
613
yield 'groupBy ' => [
548
614
['aggregate ' => [
549
615
[['$group ' => ['_id ' => ['foo ' => '$foo ' ], 'foo ' => ['$last ' => '$foo ' ]]]],
0 commit comments