@@ -267,6 +267,94 @@ describe('vModel', () => {
267
267
expect ( data . lazy ) . toEqual ( 'foo' )
268
268
} )
269
269
270
+ it ( 'should work with range' , async ( ) => {
271
+ const component = defineComponent ( {
272
+ data ( ) {
273
+ return { value : 25 }
274
+ } ,
275
+ render ( ) {
276
+ return [
277
+ withVModel (
278
+ h ( 'input' , {
279
+ type : 'range' ,
280
+ min : 1 ,
281
+ max : 100 ,
282
+ class : 'foo' ,
283
+ 'onUpdate:modelValue' : setValue . bind ( this )
284
+ } ) ,
285
+ this . value ,
286
+ {
287
+ number : true
288
+ }
289
+ ) ,
290
+ withVModel (
291
+ h ( 'input' , {
292
+ type : 'range' ,
293
+ min : 1 ,
294
+ max : 100 ,
295
+ class : 'bar' ,
296
+ 'onUpdate:modelValue' : setValue . bind ( this )
297
+ } ) ,
298
+ this . value ,
299
+ {
300
+ lazy : true
301
+ }
302
+ )
303
+ ]
304
+ }
305
+ } )
306
+ render ( h ( component ) , root )
307
+
308
+ const foo = root . querySelector ( '.foo' )
309
+ const bar = root . querySelector ( '.bar' )
310
+ const data = root . _vnode . component . data
311
+
312
+ foo . value = 20
313
+ triggerEvent ( 'input' , foo )
314
+ await nextTick ( )
315
+ expect ( data . value ) . toEqual ( 20 )
316
+
317
+ foo . value = 200
318
+ triggerEvent ( 'input' , foo )
319
+ await nextTick ( )
320
+ expect ( data . value ) . toEqual ( 100 )
321
+
322
+ foo . value = - 1
323
+ triggerEvent ( 'input' , foo )
324
+ await nextTick ( )
325
+ expect ( data . value ) . toEqual ( 1 )
326
+
327
+ bar . value = 30
328
+ triggerEvent ( 'change' , bar )
329
+ await nextTick ( )
330
+ expect ( data . value ) . toEqual ( '30' )
331
+
332
+ bar . value = 200
333
+ triggerEvent ( 'change' , bar )
334
+ await nextTick ( )
335
+ expect ( data . value ) . toEqual ( '100' )
336
+
337
+ bar . value = - 1
338
+ triggerEvent ( 'change' , bar )
339
+ await nextTick ( )
340
+ expect ( data . value ) . toEqual ( '1' )
341
+
342
+ data . value = 60
343
+ await nextTick ( )
344
+ expect ( foo . value ) . toEqual ( '60' )
345
+ expect ( bar . value ) . toEqual ( '60' )
346
+
347
+ data . value = - 1
348
+ await nextTick ( )
349
+ expect ( foo . value ) . toEqual ( '1' )
350
+ expect ( bar . value ) . toEqual ( '1' )
351
+
352
+ data . value = 200
353
+ await nextTick ( )
354
+ expect ( foo . value ) . toEqual ( '100' )
355
+ expect ( bar . value ) . toEqual ( '100' )
356
+ } )
357
+
270
358
it ( 'should work with checkbox' , async ( ) => {
271
359
const component = defineComponent ( {
272
360
data ( ) {
0 commit comments