Skip to content

Commit f181995

Browse files
authored
Merge pull request #69 from NizarBerjawi/main
Append query parameters to URLs when using cursor pagination
2 parents 0958770 + ec1f809 commit f181995

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

.phpunit.result.cache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"version":1,"defects":{"\/Users\/alexandrumanase\/Documents\/repos\/laravel-json-api-paginate\/tests\/BuilderTest.php::it":4},"times":{"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_paginate_records":0.073,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_paginate_records_with_cursor":0.071,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_returns_the_amount_of_records_specified_in_the_config_file":0.005,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_returns_the_amount_of_records_specified_in_the_config_file_using_cursor":0.004,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_return_the_specified_amount_of_records":0.004,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_return_the_specified_amount_of_records_with_cursor":0.004,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_will_not_return_more_records_that_the_configured_maximum":0.004,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_set_a_custom_base_url_in_the_config_file":0.004,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_use_simple_pagination":0.004,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_use_cursor_pagination":0.005,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_use_base_query_builder":0.005,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_use_base_query_builder_with_cursor_pagination":0.004,"\/Users\/alexandrumanase\/Documents\/repos\/laravel-json-api-paginate\/tests\/BuilderTest.php::it":0.004,"\/Users\/alexandrumanase\/Documents\/repos\/laravel-json-api-paginate\/tests\/RequestTest.php::it":0.006}}
1+
{"version":1,"defects":{"\/Users\/alexandrumanase\/Documents\/repos\/laravel-json-api-paginate\/tests\/BuilderTest.php::it":4},"times":{"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_paginate_records":0.073,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_paginate_records_with_cursor":0.071,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_returns_the_amount_of_records_specified_in_the_config_file":0.005,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_returns_the_amount_of_records_specified_in_the_config_file_using_cursor":0.004,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_return_the_specified_amount_of_records":0.004,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_return_the_specified_amount_of_records_with_cursor":0.004,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_will_not_return_more_records_that_the_configured_maximum":0.004,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_set_a_custom_base_url_in_the_config_file":0.004,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_use_simple_pagination":0.004,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_use_cursor_pagination":0.005,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_use_base_query_builder":0.005,"Spatie\\JsonApiPaginate\\Test\\BuilderTest::it_can_use_base_query_builder_with_cursor_pagination":0.004,"\/Users\/alexandrumanase\/Documents\/repos\/laravel-json-api-paginate\/tests\/BuilderTest.php::it":0.004,"\/Users\/alexandrumanase\/Documents\/repos\/laravel-json-api-paginate\/tests\/RequestTest.php::it":0.006,"\/var\/www\/html\/tests\/BuilderTest.php::it":0.013,"\/var\/www\/html\/tests\/RequestTest.php::it":0.017}}

src/JsonApiPaginateServiceProvider.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ protected function registerMacro()
5151

5252
$paginator = $paginationMethod === 'cursorPaginate'
5353
? $this->{$paginationMethod}($size, ['*'], $paginationParameter.'['.$cursorParameter.']', $cursor)
54+
->appends(Arr::except(request()->input(), $paginationParameter.'.'.$cursorParameter))
5455
: $this
5556
->{$paginationMethod}($size, ['*'], $paginationParameter.'.'.$numberParameter)
5657
->setPageName($paginationParameter.'['.$numberParameter.']')

tests/RequestTest.php

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@
3838

3939
it('will use the configured size parameter for cursor')
4040
->get('cursor/?page[size]=10')
41-
->assertJsonFragment(['next_cursor' => 'eyJpZCI6MTAsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0']);
41+
->assertJsonFragment([
42+
'per_page' => 10,
43+
'next_cursor' => 'eyJpZCI6MTAsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0'
44+
]);
4245

4346
it('will use default size when page size is 0', function () {
4447
$default_size = config('json-api-paginate.default_size');
@@ -63,3 +66,21 @@
6366

6467
$response->assertJsonFragment(['per_page' => $default_size]);
6568
});
69+
70+
it('will append other parameters to urls', function() {
71+
$response = $this->get('/?page[size]=10&page[number]=3');
72+
73+
$response->assertJsonFragment([
74+
'next_page_url' => url('/?page%5Bsize%5D=10&page%5Bnumber%5D=4'),
75+
'prev_page_url' => url('/?page%5Bsize%5D=10&page%5Bnumber%5D=2'),
76+
]);
77+
});
78+
79+
it('will append other parameters to urls for cursor', function() {
80+
$response = $this->get('cursor/?page[size]=10&page[cursor]=eyJpZCI6MTAsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0');
81+
82+
$response->assertJsonFragment([
83+
'next_page_url' => url('cursor/?page%5Bsize%5D=10&page%5Bcursor%5D=eyJpZCI6MjAsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0'),
84+
'prev_page_url' => url('cursor/?page%5Bsize%5D=10&page%5Bcursor%5D=eyJpZCI6MTEsIl9wb2ludHNUb05leHRJdGVtcyI6ZmFsc2V9'),
85+
]);
86+
});

0 commit comments

Comments
 (0)