@@ -291,6 +291,94 @@ describe('vModel', () => {
291
291
expect ( data . lazy ) . toEqual ( 'foo' )
292
292
} )
293
293
294
+ it ( 'should work with range' , async ( ) => {
295
+ const component = defineComponent ( {
296
+ data ( ) {
297
+ return { value : 25 }
298
+ } ,
299
+ render ( ) {
300
+ return [
301
+ withVModel (
302
+ h ( 'input' , {
303
+ type : 'range' ,
304
+ min : 1 ,
305
+ max : 100 ,
306
+ class : 'foo' ,
307
+ 'onUpdate:modelValue' : setValue . bind ( this )
308
+ } ) ,
309
+ this . value ,
310
+ {
311
+ number : true
312
+ }
313
+ ) ,
314
+ withVModel (
315
+ h ( 'input' , {
316
+ type : 'range' ,
317
+ min : 1 ,
318
+ max : 100 ,
319
+ class : 'bar' ,
320
+ 'onUpdate:modelValue' : setValue . bind ( this )
321
+ } ) ,
322
+ this . value ,
323
+ {
324
+ lazy : true
325
+ }
326
+ )
327
+ ]
328
+ }
329
+ } )
330
+ render ( h ( component ) , root )
331
+
332
+ const foo = root . querySelector ( '.foo' )
333
+ const bar = root . querySelector ( '.bar' )
334
+ const data = root . _vnode . component . data
335
+
336
+ foo . value = 20
337
+ triggerEvent ( 'input' , foo )
338
+ await nextTick ( )
339
+ expect ( data . value ) . toEqual ( 20 )
340
+
341
+ foo . value = 200
342
+ triggerEvent ( 'input' , foo )
343
+ await nextTick ( )
344
+ expect ( data . value ) . toEqual ( 100 )
345
+
346
+ foo . value = - 1
347
+ triggerEvent ( 'input' , foo )
348
+ await nextTick ( )
349
+ expect ( data . value ) . toEqual ( 1 )
350
+
351
+ bar . value = 30
352
+ triggerEvent ( 'change' , bar )
353
+ await nextTick ( )
354
+ expect ( data . value ) . toEqual ( '30' )
355
+
356
+ bar . value = 200
357
+ triggerEvent ( 'change' , bar )
358
+ await nextTick ( )
359
+ expect ( data . value ) . toEqual ( '100' )
360
+
361
+ bar . value = - 1
362
+ triggerEvent ( 'change' , bar )
363
+ await nextTick ( )
364
+ expect ( data . value ) . toEqual ( '1' )
365
+
366
+ data . value = 60
367
+ await nextTick ( )
368
+ expect ( foo . value ) . toEqual ( '60' )
369
+ expect ( bar . value ) . toEqual ( '60' )
370
+
371
+ data . value = - 1
372
+ await nextTick ( )
373
+ expect ( foo . value ) . toEqual ( '1' )
374
+ expect ( bar . value ) . toEqual ( '1' )
375
+
376
+ data . value = 200
377
+ await nextTick ( )
378
+ expect ( foo . value ) . toEqual ( '100' )
379
+ expect ( bar . value ) . toEqual ( '100' )
380
+ } )
381
+
294
382
it ( 'should work with checkbox' , async ( ) => {
295
383
const component = defineComponent ( {
296
384
data ( ) {
0 commit comments