Skip to content

Commit 3ae51e6

Browse files
authoredMar 30, 2021
feat(pagination): implement canRefine (#4683)
* feat(pagination): implement canRefine DX-1313 * add canRefine to mock * chore(test): take impact in account
1 parent a898f09 commit 3ae51e6

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed
 

‎src/connectors/pagination/__tests__/connectPagination-test.ts

+34
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/pagination/
445445
pages: [],
446446
createURL: expect.any(Function),
447447
refine: expect.any(Function),
448+
canRefine: false,
448449
widgetParams: {},
449450
});
450451
});
@@ -461,6 +462,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/pagination/
461462
pages: [],
462463
createURL: expect.any(Function),
463464
refine: expect.any(Function),
465+
canRefine: false,
464466
widgetParams: { padding: 5 },
465467
});
466468
});
@@ -487,6 +489,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/pagination/
487489
pages: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
488490
createURL: expect.any(Function),
489491
refine: expect.any(Function),
492+
canRefine: true,
490493
widgetParams: { padding: 5 },
491494
});
492495
});
@@ -519,6 +522,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/pagination/
519522
pages: [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25],
520523
createURL: expect.any(Function),
521524
refine: expect.any(Function),
525+
canRefine: true,
522526
widgetParams: { padding: 5 },
523527
});
524528
});
@@ -551,6 +555,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/pagination/
551555
pages: [89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99],
552556
createURL: expect.any(Function),
553557
refine: expect.any(Function),
558+
canRefine: true,
554559
widgetParams: { padding: 5 },
555560
});
556561
});
@@ -563,6 +568,34 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/pagination/
563568

564569
expect(refine2).toBe(refine1);
565570
});
571+
572+
it('gives `canRefine` as false for a single page', () => {
573+
const [widget] = getInitializedWidget();
574+
575+
const { canRefine } = widget.getWidgetRenderState(
576+
createRenderOptions({
577+
results: new SearchResults(new SearchParameters(), [
578+
createSingleSearchResponse({ nbPages: 1 }),
579+
]),
580+
})
581+
);
582+
583+
expect(canRefine).toBe(false);
584+
});
585+
586+
it('gives `canRefine` as true for a multiple pages', () => {
587+
const [widget] = getInitializedWidget();
588+
589+
const { canRefine } = widget.getWidgetRenderState(
590+
createRenderOptions({
591+
results: new SearchResults(new SearchParameters(), [
592+
createSingleSearchResponse({ nbPages: 2 }),
593+
]),
594+
})
595+
);
596+
597+
expect(canRefine).toBe(true);
598+
});
566599
});
567600

568601
describe('getRenderState', () => {
@@ -601,6 +634,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/pagination/
601634
pages: [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25],
602635
createURL: expect.any(Function),
603636
refine: expect.any(Function),
637+
canRefine: true,
604638
widgetParams: { padding: 5 },
605639
},
606640
});

‎src/connectors/pagination/connectPagination.ts

+4
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ export type PaginationRendererOptions = {
3232
/** Sets the current page and triggers a search. */
3333
refine(page: number): void;
3434

35+
/** true if this search returned more than one page */
36+
canRefine: boolean;
37+
3538
/** The number of the page currently displayed. */
3639
currentRefinement: number;
3740

@@ -163,6 +166,7 @@ const connectPagination: ConnectPagination = function connectPagination(
163166
return {
164167
createURL: connectorState.createURL(state),
165168
refine: connectorState.refine,
169+
canRefine: nbPages > 1,
166170
currentRefinement: page,
167171
nbHits: results?.nbHits || 0,
168172
nbPages,

‎src/widgets/index/__tests__/index-test.ts

+4
Original file line numberDiff line numberDiff line change
@@ -2173,6 +2173,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/index-widge
21732173
...renderState,
21742174
pagination: {
21752175
refine: paginationRefine,
2176+
canRefine: false,
21762177
createURL: paginationCreateURL,
21772178
isFirstPage: true,
21782179
isLastPage: true,
@@ -2207,6 +2208,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/index-widge
22072208
},
22082209
pagination: {
22092210
refine: paginationRefine,
2211+
canRefine: false,
22102212
createURL: paginationCreateURL,
22112213
isFirstPage: true,
22122214
isLastPage: true,
@@ -2240,6 +2242,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/index-widge
22402242
},
22412243
pagination: {
22422244
refine: paginationRefine,
2245+
canRefine: false,
22432246
createURL: paginationCreateURL,
22442247
isFirstPage: true,
22452248
isLastPage: true,
@@ -2286,6 +2289,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/index-widge
22862289
...renderState,
22872290
pagination: {
22882291
refine: () => {},
2292+
canRefine: false,
22892293
createURL: () => '',
22902294
isFirstPage: true,
22912295
isLastPage: true,

0 commit comments

Comments
 (0)
Please sign in to comment.