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.
161 lines
3.6 KiB
161 lines
3.6 KiB
import { getRoot, fireEvent, compileAndExecute } from '../helpers/index'
|
|
|
|
describe('generate class', () => {
|
|
it('should be generated', () => {
|
|
compileAndExecute(`
|
|
<div>
|
|
<text class="a b c">Hello World</text>
|
|
</div>
|
|
`, `
|
|
style: {
|
|
a: { fontSize: '100' },
|
|
b: { color: '#ff0000' },
|
|
c: { fontWeight: 'bold' }
|
|
}
|
|
`).then(instance => {
|
|
expect(getRoot(instance)).toEqual({
|
|
type: 'div',
|
|
children: [{
|
|
type: 'text',
|
|
classList: ['a', 'b', 'c'],
|
|
attr: { value: 'Hello World' }
|
|
}]
|
|
})
|
|
})
|
|
})
|
|
|
|
it('should be updated', (done) => {
|
|
compileAndExecute(`
|
|
<div @click="foo">
|
|
<text :class="['a', x]">Hello World</text>
|
|
</div>
|
|
`, `
|
|
data: { x: 'b' },
|
|
style: {
|
|
a: { fontSize: '100' },
|
|
b: { color: '#ff0000' },
|
|
c: { fontWeight: 'bold' },
|
|
d: {
|
|
color: '#0000ff',
|
|
fontWeight: 'bold'
|
|
}
|
|
},
|
|
methods: {
|
|
foo: function () {
|
|
this.x = 'd'
|
|
}
|
|
}
|
|
`).then(instance => {
|
|
expect(getRoot(instance)).toEqual({
|
|
type: 'div',
|
|
event: ['click'],
|
|
children: [{
|
|
type: 'text',
|
|
classList: ['a', 'b'],
|
|
attr: { value: 'Hello World' }
|
|
}]
|
|
})
|
|
fireEvent(instance, '_root', 'click')
|
|
return instance
|
|
}).then(instance => {
|
|
expect(getRoot(instance)).toEqual({
|
|
type: 'div',
|
|
event: ['click'],
|
|
children: [{
|
|
type: 'text',
|
|
classList: ['a', 'd'],
|
|
attr: { value: 'Hello World' }
|
|
}]
|
|
})
|
|
done()
|
|
})
|
|
})
|
|
|
|
it('should be applied in order', (done) => {
|
|
compileAndExecute(`
|
|
<div @click="foo">
|
|
<text :class="arr">Hello World</text>
|
|
</div>
|
|
`, `
|
|
data: {
|
|
arr: ['b', 'a']
|
|
},
|
|
style: {
|
|
a: { color: '#ff0000' },
|
|
b: { color: '#00ff00' },
|
|
c: { color: '#0000ff' }
|
|
},
|
|
methods: {
|
|
foo: function () {
|
|
this.arr.push('c')
|
|
}
|
|
}
|
|
`).then(instance => {
|
|
expect(getRoot(instance)).toEqual({
|
|
type: 'div',
|
|
event: ['click'],
|
|
children: [{
|
|
type: 'text',
|
|
classList: ['b', 'a'],
|
|
attr: { value: 'Hello World' }
|
|
}]
|
|
})
|
|
fireEvent(instance, '_root', 'click')
|
|
return instance
|
|
}).then(instance => {
|
|
expect(getRoot(instance)).toEqual({
|
|
type: 'div',
|
|
event: ['click'],
|
|
children: [{
|
|
type: 'text',
|
|
classList: ['b', 'a', 'c'],
|
|
attr: { value: 'Hello World' }
|
|
}]
|
|
})
|
|
done()
|
|
})
|
|
})
|
|
|
|
it('should be cleared', (done) => {
|
|
compileAndExecute(`
|
|
<div @click="foo">
|
|
<text :class="['a', x]">Hello World</text>
|
|
</div>
|
|
`, `
|
|
data: { x: 'b' },
|
|
style: {
|
|
a: { fontSize: '100' },
|
|
b: { color: '#ff0000' },
|
|
c: { fontWeight: 'bold' }
|
|
},
|
|
methods: {
|
|
foo: function () {
|
|
this.x = 'c'
|
|
}
|
|
}
|
|
`).then(instance => {
|
|
expect(getRoot(instance)).toEqual({
|
|
type: 'div',
|
|
event: ['click'],
|
|
children: [{
|
|
type: 'text',
|
|
classList: ['a', 'b'],
|
|
attr: { value: 'Hello World' }
|
|
}]
|
|
})
|
|
fireEvent(instance, '_root', 'click')
|
|
return instance
|
|
}).then(instance => {
|
|
expect(getRoot(instance)).toEqual({
|
|
type: 'div',
|
|
event: ['click'],
|
|
children: [{
|
|
type: 'text',
|
|
classList: ['a', 'c'],
|
|
attr: { value: 'Hello World' }
|
|
}]
|
|
})
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|