You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.4 KiB
98 lines
2.4 KiB
import { getRoot, fireEvent, compileAndStringify, compileAndExecute } from '../helpers/index'
|
|
|
|
describe('generate events', () => {
|
|
it('should be bound and fired for native component', (done) => {
|
|
compileAndExecute(`
|
|
<div @click="foo">
|
|
<text>Hello {{x}}</text>
|
|
</div>
|
|
`, `
|
|
data: { x: 'World' },
|
|
methods: {
|
|
foo: function () {
|
|
this.x = 'Weex'
|
|
}
|
|
}
|
|
`).then(instance => {
|
|
expect(getRoot(instance)).toEqual({
|
|
type: 'div',
|
|
event: ['click'],
|
|
children: [{
|
|
type: 'text',
|
|
attr: { value: 'Hello World' }
|
|
}]
|
|
})
|
|
fireEvent(instance, '_root', 'click')
|
|
return instance
|
|
}).then(instance => {
|
|
expect(getRoot(instance)).toEqual({
|
|
type: 'div',
|
|
event: ['click'],
|
|
children: [{
|
|
type: 'text',
|
|
attr: { value: 'Hello Weex' }
|
|
}]
|
|
})
|
|
done()
|
|
})
|
|
})
|
|
|
|
it('should be bound and fired by custom component', (done) => {
|
|
const { render, staticRenderFns } = compileAndStringify(`<text>Hello {{x}}</text>`)
|
|
compileAndExecute(`
|
|
<div>
|
|
<text>Hello {{x}}</text>
|
|
<sub @click="foo" @click.native="bar"></sub>
|
|
</div>
|
|
`, `
|
|
data: { x: 'World' },
|
|
components: {
|
|
sub: {
|
|
data: function () {
|
|
return { x: 'Sub' }
|
|
},
|
|
render: ${render},
|
|
staticRenderFns: ${staticRenderFns},
|
|
created: function () {
|
|
this.$emit('click')
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
foo: function () {
|
|
this.x = 'Foo'
|
|
},
|
|
bar: function () {
|
|
this.x = 'Bar'
|
|
}
|
|
}
|
|
`).then(instance => {
|
|
expect(getRoot(instance)).toEqual({
|
|
type: 'div',
|
|
children: [{
|
|
type: 'text',
|
|
attr: { value: 'Hello Foo' }
|
|
}, {
|
|
type: 'text',
|
|
event: ['click'],
|
|
attr: { value: 'Hello Sub' }
|
|
}]
|
|
})
|
|
fireEvent(instance, instance.document.body.children[1].ref, 'click')
|
|
return instance
|
|
}).then(instance => {
|
|
expect(getRoot(instance)).toEqual({
|
|
type: 'div',
|
|
children: [{
|
|
type: 'text',
|
|
attr: { value: 'Hello Bar' }
|
|
}, {
|
|
type: 'text',
|
|
event: ['click'],
|
|
attr: { value: 'Hello Sub' }
|
|
}]
|
|
})
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|