const compiler = require('../lib') function assertCodegen (template, templateCode, renderCode = 'with(this){}', options = {}, mpOptions = {}) { const res = compiler.compile(template, Object.assign({ resourcePath: 'test.wxml', mp: Object.assign({ minified: true, isTest: true, platform: 'mp-weixin' }, mpOptions) }, options)) expect(res.template).toBe(templateCode) expect(res.render).toBe(renderCode) } describe('mp:compiler-extra', () => { it('generate mp filter ', () => { assertCodegen( /* eslint-disable no-template-curly-in-string */ '{{t.a}}{{t[\'a\']}}{{t.a(b)}}{{t[\'a\'](b)}}{{u.t.a(b)}}{{u.t.a}}', '{{t.a+t[\'a\']+t.a(b)+t[\'a\'](b)+$root.g0+u.t.a}}', 'with(this){var g0=u.t.a(b);$mp.data=Object.assign({},{$root:{g0:g0}})}', { filterModules: { t: {}, a: {} } } ) assertCodegen( /* eslint-disable no-template-curly-in-string */ '{{item}}', '{{item}}', 'with(this){}', { filterModules: { t: {}, a: {} } } ) }) it('generate scopeId', () => { assertCodegen( '', '', undefined, { scopeId: 'data-v-1' } ) assertCodegen( '', '', undefined, { scopeId: 'data-v-2' } ) assertCodegen( '', '', undefined, { scopeId: 'data-v-3' } ) assertCodegen( '', '', undefined, { scopeId: 'data-v-4' } ) assertCodegen( '', '', undefined, { scopeId: 'data-v-5' } ) assertCodegen( '', '', undefined, { scopeId: 'data-v-6' } ) // assertCodegen( // '', // ``, // `with(this){var c0=__get_class(view,"data-v-6");$mp.data=Object.assign({},{$root:{c0:c0}})}`, { // scopeId: 'data-v-6' // } // ) assertCodegen( '', '', undefined, { scopeId: 'data-v-7' } ) // assertCodegen( // '', // ``, // `with(this){var c0=__get_class(view,"view data-v-7");$mp.data=Object.assign({},{$root:{c0:c0}})}`, { // scopeId: 'data-v-7' // } // ) }) it('generate staticStyle upx and px', () => { assertCodegen( 'text', 'text' ) assertCodegen( 'text', 'text' ) assertCodegen( 'text', 'text' ) assertCodegen( 'text', 'text', undefined, undefined, { transformPx: true } ) }) it('generate text trim', () => { assertCodegen( 'text', 'text' ) assertCodegen( ' text ', 'text' ) assertCodegen( '{{line_one_cn+\' \'}}', '{{line_one_cn+\' \'}}' ) assertCodegen( '{{" "+line_one_cn}}', '{{" "+line_one_cn}}' ) assertCodegen( '\nN: {{title}}\n′', '{{\'N: \'+title+"\\n′"}}' ) assertCodegen( '我是第一行\n我的第二行', '我是第一行\n我的第二行' ) assertCodegen( '我是第一行\n我的第二行1{{title}}', '{{"我是第一行\\n我的第二行1"+title}}' ) assertCodegen( `我是第一行 我的第二行2{{title}}`, '{{"我是第一行\\n我的第二行2"+title}}' ) assertCodegen( ' text text ', 'text text' ) assertCodegen( 'text {{text}} text', '{{"text "+text+" text"}}' ) // assertCodegen( // 'text {{text}} \ntext', // `{{"text " + text + " \ntext"}}` // ) assertCodegen( ' text {{text}} 文本 ', '{{\'text \'+text+\' 文本\'}}' ) assertCodegen( '{{text}} text text ', '{{text+\' text text\'}}' ) assertCodegen( ' {{text}} text text ', '{{\'\'+text+\' text text\'}}' ) assertCodegen( '{{text}} text text {{text}}', '{{text+" text text "+text}}' ) assertCodegen( ' {{text}} text text {{text}} ', '{{\'\'+text+" text text "+text+\'\'}}' ) }) it('generate default slot', () => { assertCodegen( 'text', 'text' ) assertCodegen( 'text123213', 'text123213' ) assertCodegen( 'text', 'text' ) }) it('generate input value', () => { assertCodegen( '', '' ) }) it('generate v-slot', () => { assertCodegen( '', '' ) assertCodegen( '默认', 'fc默认' ) assertCodegen( 'text', 'text' ) assertCodegen( 'text123213', 'text123213' ) assertCodegen( '', '' ) assertCodegen( 'view1view2', 'view1view2' ) assertCodegen( '