@@ -423,6 +423,83 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/toggle-refi
423423 }
424424 } ) ;
425425
426+ it ( 'sets user-provided "off" value by default (falsy)' , ( ) => {
427+ const makeWidget = connectToggleRefinement ( ( ) => { } ) ;
428+ const widget = makeWidget ( {
429+ attribute : 'whatever' ,
430+ off : false ,
431+ } ) ;
432+
433+ const helper = jsHelper ( { } , '' , widget . getConfiguration ( ) ) ;
434+ widget . init ( { helper, state : helper . state } ) ;
435+
436+ expect ( helper . state . disjunctiveFacetsRefinements ) . toEqual (
437+ expect . objectContaining ( {
438+ whatever : [ 'false' ] ,
439+ } )
440+ ) ;
441+ } ) ;
442+
443+ it ( 'sets user-provided "off" value by default (truthy)' , ( ) => {
444+ const makeWidget = connectToggleRefinement ( ( ) => { } ) ;
445+ const widget = makeWidget ( {
446+ attribute : 'whatever' ,
447+ off : true ,
448+ } ) ;
449+
450+ const helper = jsHelper ( { } , '' , widget . getConfiguration ( ) ) ;
451+ widget . init ( { helper, state : helper . state } ) ;
452+
453+ expect ( helper . state . disjunctiveFacetsRefinements ) . toEqual (
454+ expect . objectContaining ( {
455+ whatever : [ 'true' ] ,
456+ } )
457+ ) ;
458+ } ) ;
459+
460+ it ( 'sets user-provided "on" value on refine (falsy)' , ( ) => {
461+ let caughtRefine ;
462+ const makeWidget = connectToggleRefinement ( ( { refine } ) => {
463+ caughtRefine = refine ;
464+ } ) ;
465+ const widget = makeWidget ( {
466+ attribute : 'whatever' ,
467+ on : false ,
468+ } ) ;
469+
470+ const helper = jsHelper ( { search ( ) { } } , '' , widget . getConfiguration ( ) ) ;
471+ helper . search = jest . fn ( ) ;
472+
473+ widget . init ( { helper, state : helper . state } ) ;
474+
475+ expect ( helper . state . disjunctiveFacetsRefinements ) . toEqual ( { } ) ;
476+
477+ widget . render ( {
478+ results : new SearchResults ( helper . state , [
479+ {
480+ facets : {
481+ whatever : {
482+ true : 45 ,
483+ false : 40 ,
484+ } ,
485+ } ,
486+ nbHits : 85 ,
487+ } ,
488+ ] ) ,
489+ state : helper . state ,
490+ helper,
491+ } ) ;
492+
493+ // toggle the value
494+ caughtRefine ( ) ;
495+
496+ expect ( helper . state . disjunctiveFacetsRefinements ) . toEqual (
497+ expect . objectContaining ( {
498+ whatever : [ 'false' ] ,
499+ } )
500+ ) ;
501+ } ) ;
502+
426503 describe ( 'routing' , ( ) => {
427504 const getInitializedWidget = ( config = { } ) => {
428505 const rendering = jest . fn ( ) ;
0 commit comments