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',
wxparser: 'plugin://wxparserPlugin/wxparser',
},
})
assert(
``,
``,
`(_ctx, _cache) => {
return { a: _ctx.richText, b: _p({ customStyle: 'background-color: unset;', closeOnClickOverlay: true }) }
}`,
{
filename,
nodeTransforms,
}
)
})
})