@@ -6,6 +6,25 @@ import algoliasearchHelper, {
66import connectPagination from '../connectPagination' ;
77
88describe ( 'connectPagination' , ( ) => {
9+ const getInitializedWidget = ( ) => {
10+ const renderFn = jest . fn ( ) ;
11+ const makeWidget = connectPagination ( renderFn ) ;
12+ const widget = makeWidget ( { } ) ;
13+
14+ const helper = algoliasearchHelper ( { } , '' ) ;
15+ helper . search = jest . fn ( ) ;
16+
17+ widget . init ( {
18+ helper,
19+ state : helper . state ,
20+ createURL : ( ) => '#' ,
21+ } ) ;
22+
23+ const { refine } = renderFn . mock . calls [ 0 ] [ 0 ] ;
24+
25+ return [ widget , helper , refine ] ;
26+ } ;
27+
928 describe ( 'Usage' , ( ) => {
1029 it ( 'throws without render function' , ( ) => {
1130 expect ( ( ) => {
@@ -361,113 +380,71 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/pagination/
361380 } ) ;
362381 } ) ;
363382
364- describe ( 'routing' , ( ) => {
365- const getInitializedWidget = ( ) => {
366- const renderFn = jest . fn ( ) ;
367- const makeWidget = connectPagination ( renderFn ) ;
368- const widget = makeWidget ( { } ) ;
383+ describe ( 'getWidgetState' , ( ) => {
384+ test ( 'returns the `uiState` emtpy' , ( ) => {
385+ const [ widget , helper ] = getInitializedWidget ( ) ;
369386
370- const helper = algoliasearchHelper ( { } , '' ) ;
371- helper . search = jest . fn ( ) ;
387+ const actual = widget . getWidgetState (
388+ { } ,
389+ {
390+ searchParameters : helper . state ,
391+ helper,
392+ }
393+ ) ;
372394
373- widget . init ( {
374- helper,
375- state : helper . state ,
376- createURL : ( ) => '#' ,
377- } ) ;
395+ expect ( actual ) . toEqual ( { } ) ;
396+ } ) ;
378397
379- const { refine } = renderFn . mock . calls [ 0 ] [ 0 ] ;
398+ test ( 'returns the `uiState` with a refinement' , ( ) => {
399+ const [ widget , helper ] = getInitializedWidget ( ) ;
380400
381- return [ widget , helper , refine ] ;
382- } ;
401+ helper . setQueryParameter ( 'page' , 4 ) ;
383402
384- describe ( 'getWidgetState' , ( ) => {
385- test ( 'should give back the object unmodified if the default value is selected' , ( ) => {
386- const [ widget , helper ] = getInitializedWidget ( ) ;
387- const uiStateBefore = { } ;
388- const uiStateAfter = widget . getWidgetState ( uiStateBefore , {
403+ const actual = widget . getWidgetState (
404+ { } ,
405+ {
389406 searchParameters : helper . state ,
390407 helper,
391- } ) ;
408+ }
409+ ) ;
392410
393- expect ( uiStateAfter ) . toBe ( uiStateBefore ) ;
411+ expect ( actual ) . toEqual ( {
412+ page : 5 , // page + 1
394413 } ) ;
414+ } ) ;
415+ } ) ;
395416
396- test ( 'should add an entry equal to the refinement' , ( ) => {
397- const [ widget , helper , refine ] = getInitializedWidget ( ) ;
398- refine ( 4 ) ;
399- const uiStateBefore = { } ;
400- const uiStateAfter = widget . getWidgetState ( uiStateBefore , {
401- searchParameters : helper . state ,
402- helper,
403- } ) ;
417+ describe ( 'getWidgetSearchParameters' , ( ) => {
418+ test ( 'returns the `SearchParameters` with the value from `uiState`' , ( ) => {
419+ const [ widget , helper ] = getInitializedWidget ( ) ;
404420
405- expect ( uiStateAfter ) . toMatchSnapshot ( ) ;
406- } ) ;
407-
408- test ( 'should give back the object unmodified if refinements are already set' , ( ) => {
409- const [ widget , helper , refine ] = getInitializedWidget ( ) ;
410- refine ( 4 ) ;
411- const uiStateBefore = {
421+ const actual = widget . getWidgetSearchParameters ( helper . state , {
422+ uiState : {
412423 page : 5 ,
413- } ;
414- const uiStateAfter = widget . getWidgetState ( uiStateBefore , {
415- searchParameters : helper . state ,
416- helper,
417- } ) ;
418-
419- expect ( uiStateAfter ) . toBe ( uiStateBefore ) ;
424+ } ,
420425 } ) ;
426+
427+ expect ( actual ) . toEqual (
428+ new SearchParameters ( {
429+ index : '' ,
430+ page : 4 , // uiState.page - 1
431+ } )
432+ ) ;
421433 } ) ;
422434
423- describe ( 'getWidgetSearchParameters' , ( ) => {
424- test ( 'should return the same SP if there are no refinements in the UI state' , ( ) => {
425- const [ widget , helper ] = getInitializedWidget ( ) ;
426- // The user presses back (browser), and the URL contains no parameters
427- const uiState = { } ;
428- // The current state is empty (and page is set to 0 by default)
429- const searchParametersBefore = SearchParameters . make ( helper . state ) ;
430- const searchParametersAfter = widget . getWidgetSearchParameters (
431- searchParametersBefore ,
432- { uiState }
433- ) ;
434- // Applying the same values should not return a new object
435- expect ( searchParametersAfter ) . toBe ( searchParametersBefore ) ;
436- } ) ;
435+ test ( 'returns the `SearchParameters` with the default value' , ( ) => {
436+ const [ widget , helper ] = getInitializedWidget ( ) ;
437437
438- test ( 'should enforce the default value if no value is in the UI State' , ( ) => {
439- const [ widget , helper , refine ] = getInitializedWidget ( ) ;
440- // The user presses back (browser), and the URL contains no parameters
441- const uiState = { } ;
442- // The current state is set to page 4
443- refine ( 4 ) ;
444- const searchParametersBefore = SearchParameters . make ( helper . state ) ;
445- const searchParametersAfter = widget . getWidgetSearchParameters (
446- searchParametersBefore ,
447- { uiState }
448- ) ;
449- // Applying an empty state, should force back to page 0
450- expect ( searchParametersAfter ) . toMatchSnapshot ( ) ;
451- expect ( searchParametersAfter . page ) . toBeUndefined ( ) ;
438+ const actual = widget . getWidgetSearchParameters ( helper . state , {
439+ uiState : { } ,
452440 } ) ;
453441
454- test ( 'should add the refinements according to the UI state provided' , ( ) => {
455- const [ widget , helper , refine ] = getInitializedWidget ( ) ;
456- // The user presses back (browser), and the URL contains some parameters
457- const uiState = {
458- page : 2 ,
459- } ;
460- // The current search is set to page 10
461- refine ( 10 ) ;
462- const searchParametersBefore = SearchParameters . make ( helper . state ) ;
463- const searchParametersAfter = widget . getWidgetSearchParameters (
464- searchParametersBefore ,
465- { uiState }
466- ) ;
467- // Applying a state with new parameters should apply them on the search
468- expect ( searchParametersAfter ) . toMatchSnapshot ( ) ;
469- expect ( searchParametersAfter . page ) . toBe ( 1 ) ;
470- } ) ;
442+ expect ( actual ) . toEqual (
443+ new SearchParameters ( {
444+ index : '' ,
445+ page : 0 ,
446+ } )
447+ ) ;
471448 } ) ;
472449 } ) ;
473450} ) ;
0 commit comments