Skip to content

Commit e23b7f9

Browse files
committed
Add a failing pagination test
1 parent 157e02b commit e23b7f9

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

test/pagination.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,3 +455,53 @@ test('next url in json response', withServer, async (t, server, got) => {
455455
'/?page=3'
456456
]);
457457
});
458+
459+
test.failing('pagiantion using searchParams', withServer, async (t, server, got) => {
460+
server.get('/', (request, response) => {
461+
const parameters = new URLSearchParams(request.url.slice(2));
462+
const page = Number(parameters.get('page') ?? 0);
463+
464+
response.end(JSON.stringify({
465+
currentUrl: request.url,
466+
next: page < 3
467+
}));
468+
});
469+
470+
interface Page {
471+
currentUrl: string;
472+
next?: string;
473+
}
474+
475+
const all = await got.paginate.all('', {
476+
searchParams: {
477+
page: 0
478+
},
479+
responseType: 'json',
480+
pagination: {
481+
transform: (response: Response<Page>) => {
482+
return [response.body.currentUrl];
483+
},
484+
paginate: (response: Response<Page>) => {
485+
const {next} = response.body;
486+
const previousPage = Number(response.request.options.searchParams!.get('page'));
487+
488+
if (!next) {
489+
return false;
490+
}
491+
492+
return {
493+
searchParams: {
494+
page: previousPage + 1
495+
}
496+
};
497+
}
498+
}
499+
});
500+
501+
t.deepEqual(all, [
502+
'/?page=0',
503+
'/?page=1',
504+
'/?page=2',
505+
'/?page=3'
506+
]);
507+
});

0 commit comments

Comments
 (0)