import test from 'ava' import { transform } from 'babel-core' const transpile = src => { return transform(src, { plugins: './index' }).code.trim() } const testTranspile = (title, code) => { test(title, t => { const compiled = transpile(code) t.snapshot(code, 'Initial code') t.snapshot(compiled, 'Compiled code') }) } const testError = (title, code) => { test(title, t => { const error = t.throws(() => transpile(code), SyntaxError) t.snapshot(code, 'Initial code') t.snapshot(error.message, 'Error mesage') }) } testError( 'Error: input[type={dynamic}, v-model]', ` ` ) testError( 'Error: input[v-model:invalidModifier]', ` ` ) testError( 'Error: input[v-model, v-model]', ` ` ) testError( 'Error: input[v-model="string literal"]', ` ` ) testError( 'Error: input[v-model={identifier}]', ` ` ) testError( 'Error: h3', `
` ) testError( 'Error: select[v-model:trim]', ` ` ) testError( 'Error: input[type="checkbox",v-model:trim]', ` ` ) testError( 'Error: input[type="radio",v-model:trim]', ` ` ) testError( 'Error: input[type="file",v-model]', ` ` ) testTranspile( 'Ignores namespaced attributes', ` ` ) testTranspile( 'textarea[v-model]', ` ` ) testTranspile( 'input[v-model]', ` ` ) testTranspile( 'input[v-model={a.b[c.d[e]]}]', ` ` ) testTranspile( 'input[type="range", v-model]', ` ` ) testTranspile( 'input[v-model:lazy]', ` ` ) testTranspile( 'input[v-model:number]', ` ` ) testTranspile( 'input[v-model:trim]', ` ` ) testTranspile( 'input[type="checkbox", v-model]', ` ` ) testTranspile( 'input[type="checkbox", value="forArray", true-value={{hello: true}}, false-value={{hello: false}}, v-model:number]', ` ` ) testTranspile( 'input[type="radio", v-model]', ` ` ) testTranspile( 'input[type="radio", value="101", v-model:number]', ` ` ) testTranspile( 'select', ` ` ) testTranspile( 'select[v-model:number]', ` ` ) testTranspile( 'custom-element[v-model]', `