Skip to content

Commit 6ce75c1

Browse files
authored
test(runtime-dom): vModel tests for input range (#5907)
1 parent 73e6523 commit 6ce75c1

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

packages/runtime-dom/__tests__/directives/vModel.spec.ts

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,94 @@ describe('vModel', () => {
291291
expect(data.lazy).toEqual('foo')
292292
})
293293

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+
294382
it('should work with checkbox', async () => {
295383
const component = defineComponent({
296384
data() {

0 commit comments

Comments
 (0)