diff --git a/src/Pagination/PagedPaginator.php b/src/Pagination/PagedPaginator.php index b631cb6..cd8f78e 100644 --- a/src/Pagination/PagedPaginator.php +++ b/src/Pagination/PagedPaginator.php @@ -11,7 +11,7 @@ class PagedPaginator extends BasePagedPaginator { protected ?int $perPageLimit = 25; - protected ?string $paginationOrder = null; + protected string $paginationOrder = ''; protected function isLastPage(Response $response): bool { @@ -48,7 +48,7 @@ protected function applyPagination(Request $request): Request return $request; } - public function setPaginationOrder(?string $order): static + public function setPaginationOrder(string $order): static { $this->paginationOrder = $order; diff --git a/tests/Feature/Pagination/PagedPaginationTest.php b/tests/Feature/Pagination/PagedPaginationTest.php index ba90853..7ecc0c0 100644 --- a/tests/Feature/Pagination/PagedPaginationTest.php +++ b/tests/Feature/Pagination/PagedPaginationTest.php @@ -87,4 +87,27 @@ public function it_can_set_the_pagination_order() } }); } + + /** @test */ + public function it_can_use_an_empty_string_as_pagination_order_default() + { + $plytix = new Plytix(); + $mockClient = MockClient::global([ + MockResponseFixture::make(fixtureName: 'token.json', status: 200), + MockResponseFixture::make(fixtureName: 'product-categories-search-page-1.json', status: 200), + MockResponseFixture::make(fixtureName: 'product-categories-search-page-2.json', status: 200), + ]); + + $paginator = $plytix->paginate(new ProductCategoriesSearchRequest()); + + foreach ($paginator as $response) { + // Let's loop so the paginator fetches all pages + } + + $mockClient->assertSent(function (Request $request, Response $response) { + if ($request instanceof ProductCategoriesSearchRequest) { + return Arr::get($request->body()->all(), 'pagination.order') === ''; + } + }); + } }