kazuya kawaguchi
9 years ago
committed by
Evan You
2 changed files with 52 additions and 1 deletions
@ -0,0 +1,49 @@ |
|||
import Vue from 'vue' |
|||
|
|||
describe('Directive v-model component', () => { |
|||
it('should work', done => { |
|||
const vm = new Vue({ |
|||
data: { |
|||
msg: 'hello' |
|||
}, |
|||
template: ` |
|||
<div> |
|||
<p>{{ msg }}</p> |
|||
<validate v-model="msg"> |
|||
<input type="text"> |
|||
</validate> |
|||
</div> |
|||
`,
|
|||
components: { |
|||
validate: { |
|||
template: '<div><slot></slot></div>', |
|||
props: ['value'], |
|||
methods: { |
|||
onInput (e) { |
|||
// something validate ...
|
|||
this.$emit('input', e) |
|||
} |
|||
}, |
|||
mounted () { |
|||
this.$el.addEventListener('input', this.onInput) |
|||
}, |
|||
destroyed () { |
|||
this.$el.removeEventListener('input', this.onInput) |
|||
} |
|||
} |
|||
} |
|||
}).$mount() |
|||
document.body.appendChild(vm.$el) |
|||
waitForUpdate(() => { |
|||
expect('v-model is not supported on element type').not.toHaveBeenWarned() |
|||
const input = vm.$el.querySelector('input') |
|||
input.value = 'world' |
|||
triggerEvent(input, 'input') |
|||
}).then(() => { |
|||
expect(vm.msg).toBe('world') |
|||
}).then(() => { |
|||
document.body.removeChild(vm.$el) |
|||
vm.$destroy() |
|||
}).then(done) |
|||
}) |
|||
}) |
Loading…
Reference in new issue