mirror of https://github.com/vuejs/core.git
test: add testcase
This commit is contained in:
parent
030553eb63
commit
4ff9ca74f6
|
@ -1,5 +1,6 @@
|
||||||
import {
|
import {
|
||||||
type VNode,
|
type VNode,
|
||||||
|
computed,
|
||||||
defineComponent,
|
defineComponent,
|
||||||
h,
|
h,
|
||||||
nextTick,
|
nextTick,
|
||||||
|
@ -1409,6 +1410,51 @@ describe('vModel', () => {
|
||||||
expect(bar.selected).toEqual(true)
|
expect(bar.selected).toEqual(true)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('multiple select (v-model has custom setter)', async () => {
|
||||||
|
const selected = ref([])
|
||||||
|
|
||||||
|
const multipleSelected = computed({
|
||||||
|
get() {
|
||||||
|
return selected.value
|
||||||
|
},
|
||||||
|
set(newVal) {
|
||||||
|
selected.value = newVal.slice(0, 1)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const setValue = (v: any) => {
|
||||||
|
multipleSelected.value = v
|
||||||
|
}
|
||||||
|
const component = defineComponent({
|
||||||
|
render() {
|
||||||
|
return [
|
||||||
|
withVModel(
|
||||||
|
h(
|
||||||
|
'select',
|
||||||
|
{
|
||||||
|
multiple: true,
|
||||||
|
'onUpdate:modelValue': setValue,
|
||||||
|
},
|
||||||
|
[h('option', { value: '1' }), h('option', { value: '2' })],
|
||||||
|
),
|
||||||
|
multipleSelected.value,
|
||||||
|
),
|
||||||
|
]
|
||||||
|
},
|
||||||
|
})
|
||||||
|
render(h(component), root)
|
||||||
|
|
||||||
|
await nextTick()
|
||||||
|
const select = root.querySelector('select')
|
||||||
|
const [foo, bar] = root.querySelectorAll('option')
|
||||||
|
foo.selected = true
|
||||||
|
bar.selected = true
|
||||||
|
triggerEvent('change', select)
|
||||||
|
await nextTick()
|
||||||
|
expect(selected.value).toEqual(['1'])
|
||||||
|
expect(foo.selected).toEqual(true)
|
||||||
|
expect(bar.selected).toEqual(false)
|
||||||
|
})
|
||||||
|
|
||||||
// #10503
|
// #10503
|
||||||
test('equal value with a leading 0 should trigger update.', async () => {
|
test('equal value with a leading 0 should trigger update.', async () => {
|
||||||
const setNum = function (this: any, value: any) {
|
const setNum = function (this: any, value: any) {
|
||||||
|
|
Loading…
Reference in New Issue