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.

125 lines
2.7 KiB

import {
compileAndStringify,
prepareRuntime,
resetRuntime,
createInstance
} from '../helpers/index'
describe('generate attribute', () => {
let runtime
beforeAll(() => {
runtime = prepareRuntime()
})
afterAll(() => {
resetRuntime()
runtime = null
})
it('should be generated', () => {
const { render, staticRenderFns } = compileAndStringify(`
<div>
<text value="Hello World" style="font-size: 100"></text>
</div>
`)
const instance = createInstance(runtime, `
new Vue({
render: ${render},
staticRenderFns: ${staticRenderFns},
el: 'body'
})
`)
expect(instance.getRealRoot()).toEqual({
type: 'div',
children: [
{ type: 'text', style: { fontSize: '100' }, attr: { value: 'Hello World' }}
]
})
})
it('should be updated', (done) => {
const { render, staticRenderFns } = compileAndStringify(`
<div @click="foo">
<text :value="x"></text>
</div>
`)
const instance = createInstance(runtime, `
new Vue({
data: {
x: 'Hello World'
},
methods: {
foo: function () {
this.x = 'Hello Vue'
}
},
render: ${render},
staticRenderFns: ${staticRenderFns},
el: "body"
})
`)
expect(instance.getRealRoot()).toEqual({
type: 'div',
event: ['click'],
children: [
{ type: 'text', attr: { value: 'Hello World' }}
]
})
instance.$fireEvent(instance.doc.body.ref, 'click', {})
setTimeout(() => {
expect(instance.getRealRoot()).toEqual({
type: 'div',
event: ['click'],
children: [
{ type: 'text', attr: { value: 'Hello Vue' }}
]
})
done()
})
})
it('should be cleared', (done) => {
const { render, staticRenderFns } = compileAndStringify(`
<div @click="foo">
<text :value="x"></text>
</div>
`)
const instance = createInstance(runtime, `
new Vue({
data: {
x: 'Hello World'
},
methods: {
foo: function () {
this.x = ''
}
},
render: ${render},
staticRenderFns: ${staticRenderFns},
el: "body"
})
`)
expect(instance.getRealRoot()).toEqual({
type: 'div',
event: ['click'],
children: [
{ type: 'text', attr: { value: 'Hello World' }}
]
})
instance.$fireEvent(instance.doc.body.ref, 'click', {})
setTimeout(() => {
expect(instance.getRealRoot()).toEqual({
type: 'div',
event: ['click'],
children: [
{ type: 'text', attr: { value: '' }}
]
})
done()
})
})
})