import { addMiniProgramPageJson, COMPONENT_BIND_LINK, createTransformComponentLink, } from '@dcloudio/uni-cli-shared' import { assert } from './testUtils' const nodeTransforms = [createTransformComponentLink(COMPONENT_BIND_LINK)] describe('compiler: transform component', () => { test('component + component', () => { assert( ``, ``, `(_ctx, _cache) => { return {} }`, { nodeTransforms, } ) }) test('component + component + component', () => { assert( ``, ``, `(_ctx, _cache) => { return {} }`, { nodeTransforms, } ) }) test('component with v-for', () => { assert( ``, ``, `(_ctx, _cache) => { return { a: _f(_ctx.items, (item, k0, i0) => { return { a: '2a9ec0b0-0' + '-' + i0 }; }) } }`, { nodeTransforms, } ) assert( ``, ``, `(_ctx, _cache) => { return { a: _f(_ctx.items, (item, key, index) => { return { a: '2a9ec0b0-0' + '-' + index }; }) } }`, { nodeTransforms, } ) }) test('component + component with v-for', () => { assert( ``, ``, `(_ctx, _cache) => { return { a: _f(_ctx.items, (item, k0, i0) => { return { a: '2a9ec0b0-1' + '-' + i0 + ',' + '2a9ec0b0-0' }; }) } }`, { nodeTransforms, } ) }) test('component with v-for + component', () => { assert( ``, ``, `(_ctx, _cache) => { return { a: _f(_ctx.items, (item, k0, i0) => { return { a: '2a9ec0b0-1' + '-' + i0 + ',' + ('2a9ec0b0-0' + '-' + i0), b: '2a9ec0b0-0' + '-' + i0 }; }) } }`, { nodeTransforms, } ) }) test('component with v-for + component with v-for', () => { assert( ``, ``, `(_ctx, _cache) => { return { a: _f(_ctx.items, (item, k0, i0) => { return { a: _f(item.items, (item1, k1, i1) => { return { a: '2a9ec0b0-1' + '-' + i0 + '-' + i1 + ',' + ('2a9ec0b0-0' + '-' + i0) }; }), b: '2a9ec0b0-0' + '-' + i0 }; }) } }`, { nodeTransforms, } ) }) test(`component with boolean attribute`, () => { assert( ``, ``, `(_ctx, _cache) => { return { a: _p({ accordion: true }) } }` ) }) test(`component with props`, () => { assert( ``, ``, `(_ctx, _cache) => { return { a: _ctx.b, b: _ctx.d, c: _n(_ctx.f), d: _s(_ctx.h), e: _o(_ctx.i), f: _ctx.o, g: _ctx.r, h: _ctx.t, i: _o($event => _ctx.j = $event), j: _o($event => _ctx.k = $event), k: _p({ ['prop-a']: 'l', ['prop-b']: _ctx.m, first: _ctx.j, last: _ctx.k }) } }` ) assert( ``, ``, `(_ctx, _cache) => { return _e({ a: _ctx.ok }, _ctx.ok ? { b: _p({ accordion: true }) } : { c: _p({ accordion: true }) }) }` ) }) test(`mini program component`, () => { const filename = 'pages/vant/vant' addMiniProgramPageJson(filename, { usingComponents: { 'van-button': 'wxcomponents/button/index', }, }) assert( ``, ``, `(_ctx, _cache) => { return { a: _p({ customStyle: 'background-color: unset;', closeOnClickOverlay: true }) } }`, { filename, nodeTransforms, } ) }) })