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.

84 lines
3.4 KiB

import { compile } from '../../../packages/weex-template-compiler'
import { strToRegExp } from '../helpers/index'
describe('compile style', () => {
it('should be compiled', () => {
const { render, staticRenderFns, errors } = compile(`<div style="a: x; b: y"></div>`)
expect(render).not.toBeUndefined()
expect(staticRenderFns).not.toBeUndefined()
expect(staticRenderFns.length).toEqual(0)
expect(render).toMatch(strToRegExp(`staticStyle:{a:"x",b:"y"}`))
expect(errors).toEqual([])
})
it('should compile empty style value', () => {
const { render, staticRenderFns, errors } = compile(`<div style=""></div>`)
expect(render).not.toBeUndefined()
expect(staticRenderFns).not.toBeUndefined()
expect(staticRenderFns.length).toEqual(0)
expect(render).toMatch(/[(^style|^staticStyle)]/)
expect(errors).toEqual([])
})
it('should compile style value with trailing semicolon', () => {
const { render, staticRenderFns, errors } = compile(`<div style="a: x; b: y;"></div>`)
expect(render).not.toBeUndefined()
expect(staticRenderFns).not.toBeUndefined()
expect(staticRenderFns.length).toEqual(0)
expect(render).toMatch(strToRegExp(`staticStyle:{a:"x",b:"y"}`))
expect(errors).toEqual([])
})
it('should compile hyphenated style name & value', () => {
const { render, staticRenderFns, errors } = compile(`<div style="-abc-def: x-y; abc-def: x-y"></div>`)
expect(render).not.toBeUndefined()
expect(staticRenderFns).not.toBeUndefined()
expect(staticRenderFns.length).toEqual(0)
expect(render).toMatch(strToRegExp(`staticStyle:{AbcDef:"x-y",abcDef:"x-y"}`))
expect(errors).toEqual([])
})
it('should compile dynamic style', () => {
const { render, staticRenderFns, errors } = compile(`<div style="a: x; b: {{y}}"></div>`)
expect(render).not.toBeUndefined()
expect(staticRenderFns).toEqual([])
expect(render).toMatch(strToRegExp(`style:{a:"x",b:_s(y)}`))
expect(errors).not.toBeUndefined()
expect(errors.length).toEqual(1)
expect(errors[0]).toMatch(strToRegExp(`b: {{y}}`))
expect(errors[0]).toMatch(strToRegExp(`v-bind`))
})
it('should compile style binding of array', () => {
const { render, staticRenderFns, errors } = compile(`<div v-bind:style="[a, b, c]"></div>`)
expect(render).not.toBeUndefined()
expect(staticRenderFns).toEqual([])
expect(render).toMatch(strToRegExp(`style:[a, b, c]`))
expect(errors).toEqual([])
})
it('should compile style binding of map', () => {
const { render, staticRenderFns, errors } = compile(`<div v-bind:style="{ a: x, b: 'y' + z }"></div>`)
expect(render).not.toBeUndefined()
expect(staticRenderFns).toEqual([])
expect(render).toMatch(strToRegExp(`style:{ a: x, b: 'y' + z }`))
expect(errors).toEqual([])
})
it('should compile style binding of a variable', () => {
const { render, staticRenderFns, errors } = compile(`<div v-bind:style="x"></div>`)
expect(render).not.toBeUndefined()
expect(staticRenderFns).toEqual([])
expect(render).toMatch(strToRegExp(`style:x`))
expect(errors).toEqual([])
})
it('should compile style binding by shorthand', () => {
const { render, staticRenderFns, errors } = compile(`<div :style="[a, b, c]"></div>`)
expect(render).not.toBeUndefined()
expect(staticRenderFns).toEqual([])
expect(render).toMatch(strToRegExp(`style:[a, b, c]`))
expect(errors).toEqual([])
})
})