@@ -320,12 +320,46 @@ public static function provideQueryBuilderToMql(): iterable
320
320
]),
321
321
];
322
322
323
+
323
324
/** @see DatabaseQueryBuilderTest::testForPage() */
324
325
yield 'forPage ' => [
325
326
['find ' => [[], ['limit ' => 20 , 'skip ' => 40 ]]],
326
327
fn (Builder $ builder ) => $ builder ->forPage (3 , 20 ),
327
328
];
328
329
330
+ yield 'skip limit ' => [
331
+ ['find ' => [[], ['skip ' => 5 , 'limit ' => 10 ]]],
332
+ fn (Builder $ builder ) => $ builder ->offset (5 )->limit (10 ),
333
+ ];
334
+
335
+ /** @see DatabaseQueryBuilderTest::testLimitsAndOffsets() */
336
+ yield 'offset limit ' => [
337
+ ['find ' => [[], ['skip ' => 5 , 'limit ' => 10 ]]],
338
+ fn (Builder $ builder ) => $ builder ->offset (5 )->limit (10 ),
339
+ ];
340
+
341
+ yield 'offset 0 limit 0 ' => [
342
+ ['find ' => [[], []]],
343
+ fn (Builder $ builder ) => $ builder ->offset (0 )->limit (0 ),
344
+ ];
345
+
346
+ yield 'offset limit negative ' => [
347
+ ['find ' => [[], []]],
348
+ fn (Builder $ builder ) => $ builder ->offset (-5 )->limit (-10 ),
349
+ ];
350
+
351
+ yield 'offset limit null (reset) ' => [
352
+ ['find ' => [[], []]],
353
+ fn (Builder $ builder ) => $ builder
354
+ ->offset (5 )->limit (10 )
355
+ ->offset (null )->limit (null ),
356
+ ];
357
+
358
+ yield 'skip take (aliases) ' => [
359
+ ['find ' => [[], ['skip ' => 5 , 'limit ' => 10 ]]],
360
+ fn (Builder $ builder ) => $ builder ->skip (5 )->limit (10 ),
361
+ ];
362
+
329
363
/** @see DatabaseQueryBuilderTest::testOrderBys() */
330
364
yield 'orderBy multiple columns ' => [
331
365
['find ' => [[], ['sort ' => ['email ' => 1 , 'age ' => -1 ]]]],
@@ -531,6 +565,38 @@ function (Builder $builder) {
531
565
->select ('foo ' , 'bar ' ),
532
566
];
533
567
568
+ /** @see DatabaseQueryBuilderTest::testLatest() */
569
+ yield 'latest ' => [
570
+ ['find ' => [[], ['sort ' => ['created_at ' => -1 ]]]],
571
+ fn (Builder $ builder ) => $ builder ->latest (),
572
+ ];
573
+
574
+ yield 'latest limit ' => [
575
+ ['find ' => [[], ['sort ' => ['created_at ' => -1 ], 'limit ' => 1 ]]],
576
+ fn (Builder $ builder ) => $ builder ->latest ()->limit (1 ),
577
+ ];
578
+
579
+ yield 'latest custom field ' => [
580
+ ['find ' => [[], ['sort ' => ['updated_at ' => -1 ]]]],
581
+ fn (Builder $ builder ) => $ builder ->latest ('updated_at ' ),
582
+ ];
583
+
584
+ /** @see DatabaseQueryBuilderTest::testOldest() */
585
+ yield 'oldest ' => [
586
+ ['find ' => [[], ['sort ' => ['created_at ' => 1 ]]]],
587
+ fn (Builder $ builder ) => $ builder ->oldest (),
588
+ ];
589
+
590
+ yield 'oldest limit ' => [
591
+ ['find ' => [[], ['sort ' => ['created_at ' => 1 ], 'limit ' => 1 ]]],
592
+ fn (Builder $ builder ) => $ builder ->oldest ()->limit (1 ),
593
+ ];
594
+
595
+ yield 'oldest custom field ' => [
596
+ ['find ' => [[], ['sort ' => ['updated_at ' => 1 ]]]],
597
+ fn (Builder $ builder ) => $ builder ->oldest ('updated_at ' ),
598
+ ];
599
+
534
600
yield 'groupBy ' => [
535
601
['aggregate ' => [
536
602
[['$group ' => ['_id ' => ['foo ' => '$foo ' ], 'foo ' => ['$last ' => '$foo ' ]]]],
0 commit comments