@@ -116,6 +116,101 @@ describe('Testing Component: Filters', () => {
116116 expect ( mockChildren ) . toHaveBeenCalled ( ) ;
117117 expect ( getByText ( 'Custom Filters' ) ) . toBeInTheDocument ( ) ;
118118 } ) ;
119+
120+ it ( 'Should render ranged filters correctly' , async ( ) => {
121+ const mockPriceFacet = {
122+ displayName : 'Price' ,
123+ name : 'price' ,
124+ type : 'range' ,
125+ data : { } ,
126+ hidden : false ,
127+ min : 1 ,
128+ max : 100 ,
129+ status : { } ,
130+ } ;
131+
132+ const { getByText, container } = render (
133+ < CioPlp apiKey = { DEMO_API_KEY } >
134+ < Filters facets = { [ mockPriceFacet ] } />
135+ </ CioPlp > ,
136+ ) ;
137+
138+ await waitFor ( ( ) => {
139+ expect ( getByText ( mockPriceFacet . displayName ) . toBeInTheDocument ) ;
140+
141+ const minInputValue = container . querySelector ( '.cio-slider-input-min input' ) ;
142+ const maxInputValue = container . querySelector ( '.cio-slider-input-max input' ) ;
143+
144+ expect ( minInputValue . value ) . toBe ( mockPriceFacet . min . toString ( ) ) ;
145+ expect ( maxInputValue . value ) . toBe ( mockPriceFacet . max . toString ( ) ) ;
146+
147+ const selectableTrack = container . querySelector (
148+ '.cio-doubly-ended-slider .cio-slider-track-selected' ,
149+ ) ;
150+ const minInputSlider = container . querySelector ( '.cio-doubly-ended-slider .cio-min-slider' ) ;
151+ const maxInputSlider = container . querySelector ( '.cio-doubly-ended-slider .cio-max-slider' ) ;
152+
153+ expect ( selectableTrack . style . width ) . toBe ( '100.00%' ) ;
154+ expect ( selectableTrack . style . left ) . toBe ( '0.00%' ) ;
155+
156+ expect ( minInputSlider . min ) . toBe ( mockPriceFacet . min . toString ( ) ) ;
157+ expect ( minInputSlider . max ) . toBe ( mockPriceFacet . max . toString ( ) ) ;
158+ expect ( minInputSlider . value ) . toBe ( mockPriceFacet . min . toString ( ) ) ;
159+
160+ expect ( maxInputSlider . min ) . toBe ( mockPriceFacet . min . toString ( ) ) ;
161+ expect ( maxInputSlider . max ) . toBe ( mockPriceFacet . max . toString ( ) ) ;
162+ expect ( maxInputSlider . value ) . toBe ( mockPriceFacet . max . toString ( ) ) ;
163+ } ) ;
164+ } ) ;
165+
166+ it ( 'Should render ranged filters that have already been applied correctly' , async ( ) => {
167+ const mockPriceFacet = {
168+ displayName : 'Price' ,
169+ name : 'price' ,
170+ type : 'range' ,
171+ data : { } ,
172+ hidden : false ,
173+ min : 1 ,
174+ max : 100 ,
175+ status : {
176+ min : 30 ,
177+ max : 75 ,
178+ } ,
179+ } ;
180+
181+ const { getByText, container } = render (
182+ < CioPlp apiKey = { DEMO_API_KEY } >
183+ < Filters facets = { [ mockPriceFacet ] } />
184+ </ CioPlp > ,
185+ ) ;
186+
187+ await waitFor ( ( ) => {
188+ expect ( getByText ( mockPriceFacet . displayName ) . toBeInTheDocument ) ;
189+
190+ const minInputValue = container . querySelector ( '.cio-slider-input-min input' ) ;
191+ const maxInputValue = container . querySelector ( '.cio-slider-input-max input' ) ;
192+
193+ expect ( minInputValue . value ) . toBe ( mockPriceFacet . status . min . toString ( ) ) ;
194+ expect ( maxInputValue . value ) . toBe ( mockPriceFacet . status . max . toString ( ) ) ;
195+
196+ const selectableTrack = container . querySelector (
197+ '.cio-doubly-ended-slider .cio-slider-track-selected' ,
198+ ) ;
199+ const minInputSlider = container . querySelector ( '.cio-doubly-ended-slider .cio-min-slider' ) ;
200+ const maxInputSlider = container . querySelector ( '.cio-doubly-ended-slider .cio-max-slider' ) ;
201+
202+ expect ( selectableTrack . style . width ) . toBe ( '45.45%' ) ;
203+ expect ( selectableTrack . style . left ) . toBe ( '29.29%' ) ;
204+
205+ expect ( minInputSlider . min ) . toBe ( mockPriceFacet . min . toString ( ) ) ;
206+ expect ( minInputSlider . max ) . toBe ( mockPriceFacet . max . toString ( ) ) ;
207+ expect ( minInputSlider . value ) . toBe ( mockPriceFacet . status . min . toString ( ) ) ;
208+
209+ expect ( maxInputSlider . min ) . toBe ( mockPriceFacet . min . toString ( ) ) ;
210+ expect ( maxInputSlider . max ) . toBe ( mockPriceFacet . max . toString ( ) ) ;
211+ expect ( maxInputSlider . value ) . toBe ( mockPriceFacet . status . max . toString ( ) ) ;
212+ } ) ;
213+ } ) ;
119214 } ) ;
120215
121216 describe ( ' - Behavior Tests' , ( ) => {
0 commit comments