Skip to content

Commit 46260ad

Browse files
authored
Merge pull request #62 from ifduyue/patch-1
Make negetive page[size] exception safe
2 parents afa2882 + f5c8499 commit 46260ad

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

src/JsonApiPaginateServiceProvider.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,14 @@ protected function registerMacro()
3737

3838
$size = (int) request()->input($paginationParameter.'.'.$sizeParameter, $defaultSize);
3939

40-
$size = $size > $maxResults ? $maxResults : $size;
41-
40+
if ($size <= 0) {
41+
$size = $defaultSize;
42+
}
43+
44+
if ($size > $maxResults) {
45+
$size = $maxResults;
46+
}
47+
4248
$paginator = $this
4349
->{$paginationMethod}($size, ['*'], $paginationParameter.'.'.$numberParameter)
4450
->setPageName($paginationParameter.'['.$numberParameter.']')

tests/RequestTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,34 @@ public function it_will_use_the_configured_page_number_parameter()
4747

4848
$response->assertJsonFragment(['current_page' => 2]);
4949
}
50+
51+
/** @test */
52+
public function it_will_use_default_size_when_page_size_is_zero()
53+
{
54+
$default_size = config('json-api-paginate.default_size');
55+
56+
$response = $this->get('/?page[size]=0');
57+
58+
$response->assertJsonFragment(['per_page' => $default_size]);
59+
}
60+
61+
/** @test */
62+
public function it_will_use_default_size_when_page_size_is_negative()
63+
{
64+
$default_size = config('json-api-paginate.default_size');
65+
66+
$response = $this->get('/?page[size]=-1');
67+
68+
$response->assertJsonFragment(['per_page' => $default_size]);
69+
}
70+
71+
/** @test */
72+
public function it_will_use_default_size_when_page_size_is_illegal()
73+
{
74+
$default_size = config('json-api-paginate.default_size');
75+
76+
$response = $this->get('/?page[size]=Rpfwj5N1b7');
77+
78+
$response->assertJsonFragment(['per_page' => $default_size]);
79+
}
5080
}

0 commit comments

Comments
 (0)