@@ -253,3 +253,101 @@ describe('range: item adjustments', () => {
253253 } ) ;
254254 } ) ;
255255} ) ;
256+
257+ describe ( 'range: value state classes' , ( ) => {
258+ it ( 'should apply range-value-min class when value is at min' , async ( ) => {
259+ const page = await newSpecPage ( {
260+ components : [ Range ] ,
261+ html : `<ion-range min="0" max="100" value="0"></ion-range>` ,
262+ } ) ;
263+
264+ const range = page . body . querySelector ( 'ion-range' ) ! ;
265+
266+ expect ( range . classList . contains ( 'range-value-min' ) ) . toBe ( true ) ;
267+ expect ( range . classList . contains ( 'range-value-max' ) ) . toBe ( false ) ;
268+ } ) ;
269+
270+ it ( 'should apply range-value-max class when value is at max' , async ( ) => {
271+ const page = await newSpecPage ( {
272+ components : [ Range ] ,
273+ html : `<ion-range min="0" max="100" value="100"></ion-range>` ,
274+ } ) ;
275+
276+ const range = page . body . querySelector ( 'ion-range' ) ! ;
277+
278+ expect ( range . classList . contains ( 'range-value-max' ) ) . toBe ( true ) ;
279+ expect ( range . classList . contains ( 'range-value-min' ) ) . toBe ( false ) ;
280+ } ) ;
281+
282+ it ( 'should not apply range-value-min or range-value-max classes when value is in the middle' , async ( ) => {
283+ const page = await newSpecPage ( {
284+ components : [ Range ] ,
285+ html : `<ion-range min="0" max="100" value="50"></ion-range>` ,
286+ } ) ;
287+
288+ const range = page . body . querySelector ( 'ion-range' ) ! ;
289+
290+ expect ( range . classList . contains ( 'range-value-min' ) ) . toBe ( false ) ;
291+ expect ( range . classList . contains ( 'range-value-max' ) ) . toBe ( false ) ;
292+ } ) ;
293+
294+ it ( 'should apply range-value-min class when lower knob is at min in dual knobs' , async ( ) => {
295+ const page = await newSpecPage ( {
296+ components : [ Range ] ,
297+ html : `<ion-range dual-knobs="true" min="0" max="100"></ion-range>` ,
298+ } ) ;
299+
300+ const range = page . body . querySelector ( 'ion-range' ) ! ;
301+ range . value = { lower : 0 , upper : 50 } ;
302+
303+ await page . waitForChanges ( ) ;
304+
305+ expect ( range . classList . contains ( 'range-value-min' ) ) . toBe ( true ) ;
306+ expect ( range . classList . contains ( 'range-value-max' ) ) . toBe ( false ) ;
307+ } ) ;
308+
309+ it ( 'should apply range-value-max class when upper knob is at max in dual knobs' , async ( ) => {
310+ const page = await newSpecPage ( {
311+ components : [ Range ] ,
312+ html : `<ion-range dual-knobs="true" min="0" max="100"></ion-range>` ,
313+ } ) ;
314+
315+ const range = page . body . querySelector ( 'ion-range' ) ! ;
316+ range . value = { lower : 50 , upper : 100 } ;
317+
318+ await page . waitForChanges ( ) ;
319+
320+ expect ( range . classList . contains ( 'range-value-max' ) ) . toBe ( true ) ;
321+ expect ( range . classList . contains ( 'range-value-min' ) ) . toBe ( false ) ;
322+ } ) ;
323+
324+ it ( 'should apply range-value-min and range-value-max classes for dual knobs when both are at boundaries' , async ( ) => {
325+ const page = await newSpecPage ( {
326+ components : [ Range ] ,
327+ html : `<ion-range dual-knobs="true" min="0" max="100"></ion-range>` ,
328+ } ) ;
329+
330+ const range = page . body . querySelector ( 'ion-range' ) ! ;
331+ range . value = { lower : 0 , upper : 100 } ;
332+
333+ await page . waitForChanges ( ) ;
334+
335+ expect ( range . classList . contains ( 'range-value-min' ) ) . toBe ( true ) ;
336+ expect ( range . classList . contains ( 'range-value-max' ) ) . toBe ( true ) ;
337+ } ) ;
338+
339+ it ( 'should not apply range-value-min or range-value-max classes for dual knobs when neither is at boundaries' , async ( ) => {
340+ const page = await newSpecPage ( {
341+ components : [ Range ] ,
342+ html : `<ion-range dual-knobs="true" min="0" max="100"></ion-range>` ,
343+ } ) ;
344+
345+ const range = page . body . querySelector ( 'ion-range' ) ! ;
346+ range . value = { lower : 25 , upper : 75 } ;
347+
348+ await page . waitForChanges ( ) ;
349+
350+ expect ( range . classList . contains ( 'range-value-min' ) ) . toBe ( false ) ;
351+ expect ( range . classList . contains ( 'range-value-max' ) ) . toBe ( false ) ;
352+ } ) ;
353+ } ) ;
0 commit comments