Skip to content
This repository was archived by the owner on Aug 22, 2023. It is now read-only.

Commit a2ff851

Browse files
committed
Add tests on latest/oldest & skip/limit
1 parent 655949d commit a2ff851

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

tests/Query/BuilderTest.php

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,12 +320,46 @@ public static function provideQueryBuilderToMql(): iterable
320320
]),
321321
];
322322

323+
323324
/** @see DatabaseQueryBuilderTest::testForPage() */
324325
yield 'forPage' => [
325326
['find' => [[], ['limit' => 20, 'skip' => 40]]],
326327
fn (Builder $builder) => $builder->forPage(3, 20),
327328
];
328329

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+
329363
/** @see DatabaseQueryBuilderTest::testOrderBys() */
330364
yield 'orderBy multiple columns' => [
331365
['find' => [[], ['sort' => ['email' => 1, 'age' => -1]]]],
@@ -531,6 +565,38 @@ function (Builder $builder) {
531565
->select('foo', 'bar'),
532566
];
533567

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+
534600
yield 'groupBy' => [
535601
['aggregate' => [
536602
[['$group' => ['_id' => ['foo' => '$foo'], 'foo' => ['$last' => '$foo']]]],

0 commit comments

Comments
 (0)