import { assert } from './testUtils' describe('compiler: transform class', () => { test(`static class`, () => { assert( ``, ``, `(_ctx, _cache) => { return {} }` ) assert( ``, ``, `(_ctx, _cache) => { return {} }` ) assert( ``, ``, `(_ctx, _cache) => { return {} }` ) }) test('v-bind:class basic', () => { assert( ``, ``, `(_ctx, _cache) => { return { a: _normalizeClass(_ctx.foo) } }` ) assert( ``, ``, `(_ctx, _cache) => { return { a: _normalizeClass(_ctx.foo | _ctx.bar) } }` ) }) test('v-bind:class basic + class ', () => { assert( ``, ``, `(_ctx, _cache) => { return { a: _normalizeClass(_ctx.foo) } }` ) assert( ``, ``, `(_ctx, _cache) => { return { a: _normalizeClass(_ctx.foo) } }` ) }) test('v-bind:class object syntax', () => { assert( ``, ``, `(_ctx, _cache) => { return { a: \`\${_ctx.isRed}\` ? 1 : 0 } }` ) assert( ``, ``, `(_ctx, _cache) => { return { a: _ctx.ok ? 1 : 0, b: _ctx.handle(_ctx.ok) ? 1 : 0, c: _ctx.ok > 1 ? 1 : 0, d: _ctx.j ? 1 : 0, e: _ctx.k, f: _ctx.l, g: _ctx.m ? 1 : 0, h: _normalizeClass(_ctx.n), i: _normalizeClass({ a: true }), j: _normalizeClass({ b: _ctx.o }) } }` ) }) test('v-bind:class object syntax + class', () => { assert( ``, ``, `(_ctx, _cache) => { return { a: _ctx.isRed ? 1 : 0 } }` ) assert( ``, ``, `(_ctx, _cache) => { return { a: _ctx.isRed ? 1 : 0 } }` ) assert( ``, ``, `(_ctx, _cache) => { return { a: _ctx.ok ? 1 : 0, b: _ctx.handle(_ctx.ok) ? 1 : 0, c: _ctx.ok > 1 ? 1 : 0, d: _ctx.j ? 1 : 0, e: _ctx.k, f: _ctx.l, g: _ctx.m ? 1 : 0, h: _normalizeClass(_ctx.n), i: _normalizeClass({ a: true }), j: _normalizeClass({ b: _ctx.o }) } }` ) assert( ``, ``, `(_ctx, _cache) => { return { a: _ctx.ok ? 1 : 0, b: _ctx.handle(_ctx.ok) ? 1 : 0, c: _ctx.ok > 1 ? 1 : 0, d: _ctx.j ? 1 : 0, e: _ctx.k, f: _ctx.l, g: _ctx.m ? 1 : 0, h: _normalizeClass(_ctx.n), i: _normalizeClass({ a: true }), j: _normalizeClass({ b: _ctx.o }) } }` ) }) test('v-bind:class array syntax', () => { assert( ``, ``, `(_ctx, _cache) => { return { a: _normalizeClass(_ctx.classA), b: _normalizeClass(\`\${_ctx.classB}\`) } }` ) assert( ``, ``, `(_ctx, _cache) => { return { a: _normalizeClass(_ctx.classA), b: _normalizeClass(_ctx.classB) } }` ) assert( ``, ``, `(_ctx, _cache) => { return { a: _normalizeClass(_ctx.classA), b: _normalizeClass(_ctx.classB), c: _normalizeClass({ classC: _ctx.isC, classD: _ctx.isD }), d: _normalizeClass(_ctx.isF ? 'classF' : ''), e: _normalizeClass(_ctx.isG && 'classG'), f: _normalizeClass(_ctx.classH), g: _normalizeClass([_ctx.classI, _ctx.classJ]), h: _normalizeClass(_ctx.handle(_ctx.classK)) } }` ) }) test('v-bind:class array syntax + class', () => { assert( ``, ``, `(_ctx, _cache) => { return { a: _normalizeClass(_ctx.classA), b: _normalizeClass(_ctx.classB) } }` ) assert( ``, ``, `(_ctx, _cache) => { return { a: _normalizeClass(_ctx.classA), b: _normalizeClass(_ctx.classB) } }` ) assert( ``, ``, `(_ctx, _cache) => { return { a: _normalizeClass(_ctx.classA), b: _normalizeClass(_ctx.classB), c: _normalizeClass({ classC: _ctx.isC, classD: _ctx.isD }), d: _normalizeClass(_ctx.isF ? 'classF' : ''), e: _normalizeClass(_ctx.isG && 'classG'), f: _normalizeClass(_ctx.classH), g: _normalizeClass([_ctx.classI, _ctx.classJ]), h: _normalizeClass(_ctx.handle(_ctx.classK)) } }` ) assert( ``, ``, `(_ctx, _cache) => { return { a: _normalizeClass(_ctx.classA), b: _normalizeClass(_ctx.classB), c: _normalizeClass({ classC: _ctx.isC, classD: _ctx.isD }), d: _normalizeClass(_ctx.isF ? 'classF' : ''), e: _normalizeClass(_ctx.isG && 'classG'), f: _normalizeClass(_ctx.classH), g: _normalizeClass([_ctx.classI, _ctx.classJ]), h: _normalizeClass(_ctx.handle(_ctx.classK)) } }` ) }) })