@@ -3,7 +3,7 @@ import algoliasearchHelper, {
3
3
SearchParameters ,
4
4
} from 'algoliasearch-helper' ;
5
5
6
- import connectSortBy from '../connectSortBy' ;
6
+ import connectSortBy , { SortByRendererOptions } from '../connectSortBy' ;
7
7
import index from '../../../widgets/index/index' ;
8
8
import { createSearchClient } from '../../../../test/mock/createSearchClient' ;
9
9
import { createInstantSearch } from '../../../../test/mock/createInstantSearch' ;
@@ -17,6 +17,7 @@ describe('connectSortBy', () => {
17
17
describe ( 'Usage' , ( ) => {
18
18
it ( 'throws without render function' , ( ) => {
19
19
expect ( ( ) => {
20
+ // @ts -expect-error
20
21
connectSortBy ( ) ( { } ) ;
21
22
} ) . toThrowErrorMatchingInlineSnapshot ( `
22
23
"The render function is not valid (received type Undefined).
@@ -27,6 +28,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
27
28
28
29
it ( 'throws without items' , ( ) => {
29
30
expect ( ( ) => {
31
+ // @ts -expect-error
30
32
connectSortBy ( ( ) => { } ) ( { items : undefined } ) ;
31
33
} ) . toThrowErrorMatchingInlineSnapshot ( `
32
34
"The \`items\` option expects an array of objects.
@@ -37,6 +39,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
37
39
38
40
it ( 'throws with non-array items' , ( ) => {
39
41
expect ( ( ) => {
42
+ // @ts -expect-error
40
43
connectSortBy ( ( ) => { } ) ( { items : 'items' } ) ;
41
44
} ) . toThrowErrorMatchingInlineSnapshot ( `
42
45
"The \`items\` option expects an array of objects.
@@ -80,10 +83,10 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
80
83
] ;
81
84
const widget = makeWidget ( { items } ) ;
82
85
83
- const helper = algoliasearchHelper ( { } , items [ 0 ] . value ) ;
86
+ const helper = algoliasearchHelper ( createSearchClient ( ) , items [ 0 ] . value ) ;
84
87
helper . search = jest . fn ( ) ;
85
88
86
- widget . init (
89
+ widget . init ! (
87
90
createInitOptions ( {
88
91
helper,
89
92
state : helper . state ,
@@ -105,9 +108,11 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
105
108
true
106
109
) ;
107
110
108
- widget . render (
111
+ widget . render ! (
109
112
createRenderOptions ( {
110
- results : new SearchResults ( helper . state , [ { } ] ) ,
113
+ results : new SearchResults ( helper . state , [
114
+ createSingleSearchResponse ( ) ,
115
+ ] ) ,
111
116
state : helper . state ,
112
117
helper,
113
118
} )
@@ -136,9 +141,11 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
136
141
{ label : 'Sort products by price' , value : 'priceASC' } ,
137
142
] ;
138
143
const widget = makeWidget ( { items } ) ;
139
- const helper = algoliasearchHelper ( { } , items [ 0 ] . value ) ;
144
+ const helper = algoliasearchHelper ( createSearchClient ( ) , items [ 0 ] . value ) ;
140
145
141
- expect ( ( ) => widget . dispose ( { helper, state : helper . state } ) ) . not . toThrow ( ) ;
146
+ expect ( ( ) =>
147
+ widget . dispose ! ( { helper, state : helper . state } )
148
+ ) . not . toThrow ( ) ;
142
149
} ) ;
143
150
144
151
it ( 'Renders with transformed items' , ( ) => {
@@ -158,10 +165,10 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
158
165
allItems . map ( item => ( { ...item , label : 'transformed' } ) ) ,
159
166
} ) ;
160
167
161
- const helper = algoliasearchHelper ( { } , items [ 0 ] . value ) ;
168
+ const helper = algoliasearchHelper ( createSearchClient ( ) , items [ 0 ] . value ) ;
162
169
helper . search = jest . fn ( ) ;
163
170
164
- widget . init (
171
+ widget . init ! (
165
172
createInitOptions ( {
166
173
helper,
167
174
state : helper . state ,
@@ -179,9 +186,11 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
179
186
expect . anything ( )
180
187
) ;
181
188
182
- widget . render (
189
+ widget . render ! (
183
190
createRenderOptions ( {
184
- results : new SearchResults ( helper . state , [ { } ] ) ,
191
+ results : new SearchResults ( helper . state , [
192
+ createSingleSearchResponse ( ) ,
193
+ ] ) ,
185
194
helper,
186
195
state : helper . state ,
187
196
instantSearchInstance,
@@ -214,10 +223,10 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
214
223
items,
215
224
} ) ;
216
225
217
- const helper = algoliasearchHelper ( { } , items [ 0 ] . value ) ;
226
+ const helper = algoliasearchHelper ( createSearchClient ( ) , items [ 0 ] . value ) ;
218
227
helper . search = jest . fn ( ) ;
219
228
220
- widget . init (
229
+ widget . init ! (
221
230
createInitOptions ( {
222
231
helper,
223
232
state : helper . state ,
@@ -237,9 +246,11 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
237
246
expect ( helper . search ) . toHaveBeenCalledTimes ( 1 ) ;
238
247
}
239
248
240
- widget . render (
249
+ widget . render ! (
241
250
createRenderOptions ( {
242
- results : new SearchResults ( helper . state , [ { } ] ) ,
251
+ results : new SearchResults ( helper . state , [
252
+ createSingleSearchResponse ( ) ,
253
+ ] ) ,
243
254
state : helper . state ,
244
255
helper,
245
256
} )
@@ -279,9 +290,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
279
290
) ;
280
291
281
292
const renderState1 = sortBy . getRenderState (
282
- {
283
- sortBy : { } ,
284
- } ,
293
+ { } ,
285
294
createInitOptions ( { helper } )
286
295
) ;
287
296
@@ -303,11 +312,13 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
303
312
} ,
304
313
} ) ;
305
314
306
- sortBy . init ( createInitOptions ( { helper } ) ) ;
307
- sortBy . getWidgetRenderState ( { helper } ) . refine ( 'index_desc' ) ;
315
+ sortBy . init ! ( createInitOptions ( { helper } ) ) ;
316
+ sortBy
317
+ . getWidgetRenderState ( createInitOptions ( { helper } ) )
318
+ . refine ( 'index_desc' ) ;
308
319
309
320
const renderState2 = sortBy . getRenderState (
310
- { sortBy : { } } ,
321
+ { } ,
311
322
createRenderOptions ( {
312
323
helper,
313
324
state : helper . state ,
@@ -382,8 +393,10 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
382
393
} ,
383
394
} ) ;
384
395
385
- sortBy . init ( createInitOptions ( { helper } ) ) ;
386
- sortBy . getWidgetRenderState ( { helper } ) . refine ( 'index_default' ) ;
396
+ sortBy . init ! ( createInitOptions ( { helper } ) ) ;
397
+ sortBy
398
+ . getWidgetRenderState ( createInitOptions ( { helper } ) )
399
+ . refine ( 'index_default' ) ;
387
400
388
401
const renderState2 = sortBy . getWidgetRenderState (
389
402
createRenderOptions ( {
@@ -429,7 +442,10 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
429
442
const instantSearchInstance = createInstantSearch ( {
430
443
indexName : '' ,
431
444
} ) ;
432
- const helper = algoliasearchHelper ( { } , 'index_featured' ) ;
445
+ const helper = algoliasearchHelper (
446
+ createSearchClient ( ) ,
447
+ 'index_featured'
448
+ ) ;
433
449
helper . search = jest . fn ( ) ;
434
450
435
451
const items = [
@@ -439,7 +455,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
439
455
] ;
440
456
const widget = customSortBy ( { items } ) ;
441
457
442
- widget . init (
458
+ widget . init ! (
443
459
createInitOptions ( {
444
460
helper,
445
461
state : helper . state ,
@@ -459,7 +475,10 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
459
475
const instantSearchInstance = createInstantSearch ( {
460
476
indexName : '' ,
461
477
} ) ;
462
- const helper = algoliasearchHelper ( { } , 'index_initial' ) ;
478
+ const helper = algoliasearchHelper (
479
+ createSearchClient ( ) ,
480
+ 'index_initial'
481
+ ) ;
463
482
helper . search = jest . fn ( ) ;
464
483
465
484
const items = [
@@ -470,7 +489,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
470
489
const widget = customSortBy ( { items } ) ;
471
490
472
491
expect ( ( ) => {
473
- widget . init (
492
+ widget . init ! (
474
493
createInitOptions ( {
475
494
helper,
476
495
state : helper . state ,
@@ -491,7 +510,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
491
510
492
511
describe ( 'routing' , ( ) => {
493
512
const getInitializedWidget = ( config = { } ) => {
494
- const rendering = jest . fn ( ) ;
513
+ const rendering = jest . fn < any , [ SortByRendererOptions , boolean ] > ( ) ;
495
514
const makeWidget = connectSortBy ( rendering ) ;
496
515
const instantSearchInstance = createInstantSearch ( {
497
516
indexName : 'relevance' ,
@@ -506,10 +525,10 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
506
525
...config ,
507
526
} ) ;
508
527
509
- const helper = algoliasearchHelper ( { } , 'relevance' ) ;
528
+ const helper = algoliasearchHelper ( createSearchClient ( ) , 'relevance' ) ;
510
529
helper . search = jest . fn ( ) ;
511
530
512
- widget . init (
531
+ widget . init ! (
513
532
createInitOptions ( {
514
533
helper,
515
534
state : helper . state ,
@@ -519,15 +538,15 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
519
538
520
539
const { refine } = rendering . mock . calls [ 0 ] [ 0 ] ;
521
540
522
- return [ widget , helper , refine ] ;
541
+ return [ widget , helper , refine ] as const ;
523
542
} ;
524
543
525
544
describe ( 'getWidgetUiState' , ( ) => {
526
545
test ( 'should return the same `uiState` when the default value is selected' , ( ) => {
527
546
const [ widget , helper ] = getInitializedWidget ( ) ;
528
547
529
548
const uiStateBefore = { } ;
530
- const uiStateAfter = widget . getWidgetUiState ( uiStateBefore , {
549
+ const uiStateAfter = widget . getWidgetUiState ! ( uiStateBefore , {
531
550
searchParameters : helper . state ,
532
551
helper,
533
552
} ) ;
@@ -541,7 +560,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
541
560
refine ( 'priceASC' ) ;
542
561
543
562
const uiStateBefore = { } ;
544
- const uiStateAfter = widget . getWidgetUiState ( uiStateBefore , {
563
+ const uiStateAfter = widget . getWidgetUiState ! ( uiStateBefore , {
545
564
searchParameters : helper . state ,
546
565
helper,
547
566
} ) ;
@@ -556,14 +575,14 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
556
575
557
576
refine ( 'priceASC' ) ;
558
577
559
- const uiStateBefore = widget . getWidgetUiState (
578
+ const uiStateBefore = widget . getWidgetUiState ! (
560
579
{ } ,
561
580
{
562
581
searchParameters : helper . state ,
563
582
helper,
564
583
}
565
584
) ;
566
- const uiStateAfter = widget . getWidgetUiState ( uiStateBefore , {
585
+ const uiStateAfter = widget . getWidgetUiState ! ( uiStateBefore , {
567
586
searchParameters : helper . state ,
568
587
helper,
569
588
} ) ;
@@ -594,15 +613,15 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
594
613
// Simulate an URLSync
595
614
helper . setQueryParameter ( 'index' , 'indexNamePrice' ) ;
596
615
597
- widget . init (
616
+ widget . init ! (
598
617
createInitOptions ( {
599
618
helper,
600
619
state : helper . state ,
601
620
instantSearchInstance,
602
621
} )
603
622
) ;
604
623
605
- const actual = widget . getWidgetUiState (
624
+ const actual = widget . getWidgetUiState ! (
606
625
{ } ,
607
626
{
608
627
searchParameters : helper . state ,
@@ -639,7 +658,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
639
658
) ;
640
659
helper . search = jest . fn ( ) ;
641
660
642
- widget . init (
661
+ widget . init ! (
643
662
createInitOptions ( {
644
663
helper,
645
664
state : helper . state ,
@@ -648,7 +667,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
648
667
} )
649
668
) ;
650
669
651
- const actual = widget . getWidgetUiState (
670
+ const actual = widget . getWidgetUiState ! (
652
671
{ } ,
653
672
{
654
673
searchParameters : helper . state ,
@@ -666,7 +685,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
666
685
667
686
const uiState = { } ;
668
687
const searchParametersBefore = SearchParameters . make ( helper . state ) ;
669
- const searchParametersAfter = widget . getWidgetSearchParameters (
688
+ const searchParametersAfter = widget . getWidgetSearchParameters ! (
670
689
searchParametersBefore ,
671
690
{ uiState }
672
691
) ;
@@ -682,7 +701,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
682
701
} ;
683
702
684
703
const searchParametersBefore = SearchParameters . make ( helper . state ) ;
685
- const searchParametersAfter = widget . getWidgetSearchParameters (
704
+ const searchParametersAfter = widget . getWidgetSearchParameters ! (
686
705
searchParametersBefore ,
687
706
{ uiState }
688
707
) ;
@@ -701,7 +720,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
701
720
702
721
const uiState = { } ;
703
722
const searchParametersBefore = new SearchParameters ( helper . state ) ;
704
- const searchParametersAfter = widget . getWidgetSearchParameters (
723
+ const searchParametersAfter = widget . getWidgetSearchParameters ! (
705
724
searchParametersBefore ,
706
725
{ uiState }
707
726
) ;
@@ -724,7 +743,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/sort-by/js/
724
743
] ,
725
744
} ) ;
726
745
727
- const actual = widget . getWidgetSearchParameters (
746
+ const actual = widget . getWidgetSearchParameters ! (
728
747
new SearchParameters ( {
729
748
index : 'relevance' ,
730
749
} ) ,
0 commit comments