Skip to content

Commit fb931ba

Browse files
Update: Tests indication of more data.
1 parent d31d5e5 commit fb931ba

File tree

3 files changed

+28
-11
lines changed

3 files changed

+28
-11
lines changed

src/InfiniteScroll.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,27 +20,27 @@ final class InfiniteScroll
2020
*
2121
* @phpstan-ignore-next-line missingType.generics
2222
*/
23-
public function make(string $key, Builder|CursorPaginator|Paginator $paginator, int $perPage = 15, array $columns = ['*']): array
23+
public function make(string $key, Builder|CursorPaginator|Paginator $data, int $perPage = 15, array $columns = ['*']): array
2424
{
25-
if ($paginator instanceof Paginator) {
25+
if ($data instanceof Paginator) {
2626
return [
27-
$key => Inertia::defer(fn () => $paginator->items())->deepMerge(),
27+
$key => Inertia::defer(fn () => $data)->deepMerge(),
2828
'type' => fn (): PaginationType => PaginationType::PAGED,
29-
'page' => fn () => $paginator->currentPage(),
30-
'hasMore' => fn () => $paginator->hasMorePages(),
29+
'page' => fn () => $data->currentPage(),
30+
'hasMore' => fn () => $data->hasMorePages(),
3131
'perPage' => fn (): int => $perPage,
3232
];
3333
}
3434

35-
if ($paginator instanceof Builder) {
36-
$paginator = $paginator->cursorPaginate(perPage: $perPage, columns: $columns);
35+
if ($data instanceof Builder) {
36+
$data = $data->cursorPaginate(perPage: $perPage, columns: $columns);
3737
}
3838

3939
return [
40-
$key => Inertia::defer(fn () => $paginator->items())->deepMerge(),
40+
$key => Inertia::defer(fn () => $data)->deepMerge(),
4141
'type' => fn (): PaginationType => PaginationType::CURSOR,
42-
'cursor' => fn () => $paginator->nextCursor()?->encode(),
43-
'hasMore' => fn () => $paginator->hasMorePages(), // @phpstan-ignore-line method.notFound
42+
'cursor' => fn () => $data->nextCursor()?->encode(),
43+
'hasMore' => fn () => $data->hasMorePages(), // @phpstan-ignore-line method.notFound
4444
'perPage' => fn (): int => $perPage,
4545
];
4646
}

tests/Architecture/ArchTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<?php
22

33
declare(strict_types=1);
4+
use Codelabmw\InfiniteScroll\Facades\InfiniteScroll;
45

56
arch()->preset()->php();
67
arch()->preset()->security();
7-
arch()->preset()->strict();
8+
arch()->preset()->strict()->ignoring([InfiniteScroll::class]);
89
arch()->preset()->laravel();

tests/Unit/InfiniteScrollTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,14 @@
4040
expect($result['perPage']())->toBeInt();
4141
});
4242

43+
test('determines if cursor pagination has more pages', function (): void {
44+
// Act
45+
$result = InfiniteScroll::make('test', TestModel::query(), 20);
46+
47+
// Assert
48+
expect($result['hasMore']())->toBeFalse();
49+
});
50+
4351
test('returns pagination data given a pagination object', function (): void {
4452
// Act
4553
$result = InfiniteScroll::make('test', TestModel::query()->paginate());
@@ -67,3 +75,11 @@
6775
expect($result['hasMore']())->toBeTrue();
6876
expect($result['perPage']())->toBeInt();
6977
});
78+
79+
test('determines if pagination has more pages', function () {
80+
// Act
81+
$result = InfiniteScroll::make('test', TestModel::query()->paginate(perPage: 20));
82+
83+
// Assert
84+
expect($result['hasMore']())->toBeFalse();
85+
});

0 commit comments

Comments
 (0)