@@ -60,11 +60,12 @@ describe('connectClearAll', () => {
6060
6161 const helper = jsHelper ( { addAlgoliaAgent : ( ) => { } } , '' , { facets : [ 'myFacet' ] } ) ;
6262 helper . search = sinon . stub ( ) ;
63+ helper . setQuery ( 'not empty' ) ;
6364 helper . toggleRefinement ( 'myFacet' , 'myValue' ) ;
6465
6566 const rendering = sinon . stub ( ) ;
6667 const makeWidget = connectClearAll ( rendering ) ;
67- const widget = makeWidget ( ) ;
68+ const widget = makeWidget ( { clearsQuery : false } ) ;
6869
6970 widget . init ( {
7071 helper,
@@ -74,10 +75,12 @@ describe('connectClearAll', () => {
7475 } ) ;
7576
7677 expect ( helper . hasRefinements ( 'myFacet' ) ) . toBe ( true ) ;
78+ expect ( helper . state . query ) . toBe ( 'not empty' ) ;
7779 const initClearMethod = rendering . lastCall . args [ 0 ] . refine ;
7880 initClearMethod ( ) ;
7981
8082 expect ( helper . hasRefinements ( 'myFacet' ) ) . toBe ( false ) ;
83+ expect ( helper . state . query ) . toBe ( 'not empty' ) ;
8184
8285 helper . toggleRefinement ( 'myFacet' , 'someOtherValue' ) ;
8386
@@ -89,9 +92,57 @@ describe('connectClearAll', () => {
8992 } ) ;
9093
9194 expect ( helper . hasRefinements ( 'myFacet' ) ) . toBe ( true ) ;
95+ expect ( helper . state . query ) . toBe ( 'not empty' ) ;
9296 const renderClearMethod = rendering . lastCall . args [ 0 ] . refine ;
9397 renderClearMethod ( ) ;
9498 expect ( helper . hasRefinements ( 'myFacet' ) ) . toBe ( false ) ;
99+ expect ( helper . state . query ) . toBe ( 'not empty' ) ;
100+ } ) ;
101+
102+ it ( 'Receives a mean to clear the values (and the query)' , ( ) => {
103+ // test the function received by the rendering function
104+ // to clear the refinements
105+
106+ const helper = jsHelper ( { addAlgoliaAgent : ( ) => { } } , '' , { facets : [ 'myFacet' ] } ) ;
107+ helper . search = sinon . stub ( ) ;
108+ helper . setQuery ( 'a query' ) ;
109+ helper . toggleRefinement ( 'myFacet' , 'myValue' ) ;
110+
111+ const rendering = sinon . stub ( ) ;
112+ const makeWidget = connectClearAll ( rendering ) ;
113+ const widget = makeWidget ( { clearsQuery : true } ) ;
114+
115+ widget . init ( {
116+ helper,
117+ state : helper . state ,
118+ createURL : ( ) => '#' ,
119+ onHistoryChange : ( ) => { } ,
120+ } ) ;
121+
122+ expect ( helper . hasRefinements ( 'myFacet' ) ) . toBe ( true ) ;
123+ expect ( helper . state . query ) . toBe ( 'a query' ) ;
124+ const initClearMethod = rendering . lastCall . args [ 0 ] . refine ;
125+ initClearMethod ( ) ;
126+
127+ expect ( helper . hasRefinements ( 'myFacet' ) ) . toBe ( false ) ;
128+ expect ( helper . state . query ) . toBe ( '' ) ;
129+
130+ helper . toggleRefinement ( 'myFacet' , 'someOtherValue' ) ;
131+ helper . setQuery ( 'another query' ) ;
132+
133+ widget . render ( {
134+ results : new SearchResults ( helper . state , [ { } ] ) ,
135+ state : helper . state ,
136+ helper,
137+ createURL : ( ) => '#' ,
138+ } ) ;
139+
140+ expect ( helper . hasRefinements ( 'myFacet' ) ) . toBe ( true ) ;
141+ expect ( helper . state . query ) . toBe ( 'another query' ) ;
142+ const renderClearMethod = rendering . lastCall . args [ 0 ] . refine ;
143+ renderClearMethod ( ) ;
144+ expect ( helper . hasRefinements ( 'myFacet' ) ) . toBe ( false ) ;
145+ expect ( helper . state . query ) . toBe ( '' ) ;
95146 } ) ;
96147
97148 it ( 'some refinements from results <=> hasRefinements = true' , ( ) => {
@@ -124,16 +175,49 @@ describe('connectClearAll', () => {
124175 expect ( rendering . lastCall . args [ 0 ] . hasRefinements ) . toBe ( true ) ;
125176 } ) ;
126177
127- it ( 'no refinements <=> hasRefinements = false' , ( ) => {
178+ it ( '(clearsQuery: true) query not empty <=> hasRefinements = true' , ( ) => {
179+ // test if the values sent to the rendering function
180+ // are consistent with the search state
181+ const helper = jsHelper ( { addAlgoliaAgent : ( ) => { } } , undefined , { facets : [ 'aFacet' ] } ) ;
182+ helper . setQuery ( 'no empty' ) ;
183+ helper . search = sinon . stub ( ) ;
184+
185+ const rendering = sinon . stub ( ) ;
186+ const makeWidget = connectClearAll ( rendering ) ;
187+ const widget = makeWidget ( {
188+ clearsQuery : true ,
189+ } ) ;
190+
191+ widget . init ( {
192+ helper,
193+ state : helper . state ,
194+ createURL : ( ) => '#' ,
195+ onHistoryChange : ( ) => { } ,
196+ } ) ;
197+
198+ expect ( rendering . lastCall . args [ 0 ] . hasRefinements ) . toBe ( true ) ;
199+
200+ widget . render ( {
201+ results : new SearchResults ( helper . state , [ { } ] ) ,
202+ state : helper . state ,
203+ helper,
204+ createURL : ( ) => '#' ,
205+ } ) ;
206+
207+ expect ( rendering . lastCall . args [ 0 ] . hasRefinements ) . toBe ( true ) ;
208+ } ) ;
209+
210+ it ( '(clearsQuery: false) no refinements <=> hasRefinements = false' , ( ) => {
128211 // test if the values sent to the rendering function
129212 // are consistent with the search state
130213
131214 const helper = jsHelper ( { addAlgoliaAgent : ( ) => { } } ) ;
215+ helper . setQuery ( 'not empty' ) ;
132216 helper . search = sinon . stub ( ) ;
133217
134218 const rendering = sinon . stub ( ) ;
135219 const makeWidget = connectClearAll ( rendering ) ;
136- const widget = makeWidget ( ) ;
220+ const widget = makeWidget ( { clearsQuery : false } ) ;
137221
138222 widget . init ( {
139223 helper,
0 commit comments