import { compileAndStringify, prepareRuntime, resetRuntime, createInstance } from '../helpers/index' describe('generate events', () => { let runtime beforeAll(() => { runtime = prepareRuntime() }) afterAll(() => { resetRuntime() runtime = null }) it('should be bound and fired for native component', (done) => { const { render, staticRenderFns } = compileAndStringify(`
Hello {{x}}
`) const instance = createInstance(runtime, ` new Vue({ data: { x: 'World' }, render: ${render}, staticRenderFns: ${staticRenderFns}, methods: { foo: function () { this.x = 'Weex' } }, el: 'body' }) `) expect(instance.getRealRoot()).toEqual({ type: 'div', children: [ { type: 'text', event: ['click'], attr: { value: 'Hello World' } } ] }) instance.$fireEvent(instance.doc.body.children[0].ref, 'click', {}) setTimeout(() => { expect(instance.getRealRoot()).toEqual({ type: 'div', children: [ { type: 'text', event: ['click'], attr: { value: 'Hello Weex' } } ] }) done() }) }) it('should be bound and fired by custom component', (done) => { const subTemplate = compileAndStringify(`Hello {{x}}`) const { render, staticRenderFns } = compileAndStringify(`
Hello {{x}}
`) const instance = createInstance(runtime, ` new Vue({ data: { x: 'World' }, render: ${render}, staticRenderFns: ${staticRenderFns}, components: { sub: { data: function () { return { x: 'Sub' } }, render: ${subTemplate.render}, staticRenderFns: ${subTemplate.staticRenderFns}, created: function () { this.$emit('click') } } }, methods: { foo: function () { this.x = 'Foo' }, bar: function () { this.x = 'Bar' } }, el: 'body' }) `) setTimeout(() => { expect(instance.getRealRoot()).toEqual({ type: 'div', children: [ { type: 'text', attr: { value: 'Hello Foo' } }, { type: 'text', event: ['click'], attr: { value: 'Hello Sub' } } ] }) instance.$fireEvent(instance.doc.body.children[1].ref, 'click', {}) setTimeout(() => { expect(instance.getRealRoot()).toEqual({ type: 'div', children: [ { type: 'text', attr: { value: 'Hello Bar' } }, { type: 'text', event: ['click'], attr: { value: 'Hello Sub' } } ] }) done() }) }) }) })