Skip to content

Commit

Permalink
Merge pull request #370 from caoyang818/release-3.6.8-app
Browse files Browse the repository at this point in the history
fix: 解决convert lab配置miniprogramRoot转换冲突问题以及优化单元测试快照
  • Loading branch information
qican777 authored Nov 1, 2023
2 parents a58883c + 4958a6c commit 24b7257
Show file tree
Hide file tree
Showing 9 changed files with 247 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,55 @@ class _C extends React.Component {
}
export default _C;"
`;

exports[`parseAst 当使用e.target.dataset时引入工具函数 getTarget 1`] = `
"import withWeapp, { cacheOptions, getTarget } from \\"@tarojs/with-weapp\\";
import { Block, View, Button } from \\"@tarojs/components\\";
import React from \\"react\\";
import Taro from \\"@tarojs/taro\\";
app.createPage({
data: {
tagInfo: {
id: 123456,
data: '茅台'
},
msg: '',
tagName: {}
},
getMsg(e) {
const detail = e.currentTarget;
//变量赋值
const tagName_ = getTarget(e.currentTarget, Taro).dataset.tagName;
const tagData_ = getTarget(e.currentTarget, Taro).dataset.tagData;
//结构赋值
const {
tagName
} = getTarget(e?.target, Taro)?.dataset;
const {
tagData
} = getTarget(e?.target, Taro)?.dataset;
},
getMsg02(e) {
const detail = e.currentTarget;
const tagname_ = getTarget(e.currentTarget, Taro).dataset.tagname;
const tagdata_ = getTarget(e.currentTarget, Taro).dataset.tagdata;
const {
tagname
} = getTarget(detail, Taro)?.dataset;
const {
tagdata
} = getTarget(detail, Taro)?.dataset;
}
});
cacheOptions.setOptionsToCache({});
@withWeapp(cacheOptions.getOptionsFromCache())
class _C extends React.Component {
render() {
const {
tagInfo
} = this.data;
return <Block><View>测试data-xxx-xxx写法</View><Button data-tag-name=\\"WX1314\\" data-tag-data={tagInfo} onClick={this.getMsg}>获取</Button><View>测试data-xxxXxxx 驼峰写法</View><Button data-tagname=\\"WX1314\\" data-tagdata={tagInfo} onClick={this.getMsg02}>获取</Button></Block>;
}
}
export default _C;"
`;
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`文件转换 project.config.json中添加配置miniprogramRoot后能够读取app.json进行convert 1`] = `
Convertor {
"components": Set {},
"convertDir": "
\\"miniprogramRoot\\": \\"miniprogram\\\\\\",
\\\\taroConvert\\\\src",
"convertRoot": "
\\"miniprogramRoot\\": \\"miniprogram\\\\\\",
\\\\taroConvert",
"fileTypes": Object {
"CONFIG": ".json",
"SCRIPT": ".ts",
"STYLE": ".wxss",
"TEMPL": ".wxml",
},
"hadBeenBuiltComponents": Set {},
"hadBeenBuiltImports": Set {},
"hadBeenCopyedFiles": Set {},
"importsDir": "
\\"miniprogramRoot\\": \\"miniprogram\\\\\\",
\\\\taroConvert\\\\src\\\\imports",
"isTsProject": "./miniprogram",
"miniprogramRoot": "
\\"miniprogramRoot\\": \\"miniprogram\\\\\\",
\\\\miniprogram",
"pages": Set {},
"reportErroMsg": Array [],
"root": "
\\"miniprogramRoot\\": \\"miniprogram/\\",
",
"wxsIncrementId": [Function],
}
`;

exports[`语法转换 使用新建的setData替换组件中this.data.xx,实现this.data.xx的转换 1`] = `
"import withWeapp, { cacheOptions } from \\"@tarojs/with-weapp\\";
import { Block } from \\"@tarojs/components\\";
import React from \\"react\\";
import Taro from \\"@tarojs/taro\\";
this.setData({
intData: 1024
});
cacheOptions.setOptionsToCache({});
@withWeapp(cacheOptions.getOptionsFromCache())
class _C extends React.Component {
render() {
return null;
}
}
export default _C;"
`;

exports[`语法转换 组件的动态名称转换 1`] = `
"import withWeapp, { cacheOptions } from \\"@tarojs/with-weapp\\";
import { Block, View } from \\"@tarojs/components\\";
import React from \\"react\\";
import Taro from \\"@tarojs/taro\\";
this.setData({
intData: 1024
});
cacheOptions.setOptionsToCache({});
const ComponentMap = {};
@withWeapp(cacheOptions.getOptionsFromCache())
class _C extends React.Component {
render() {
const {
infoList
} = this.data;
return infoList.map((item, index) => {
let ComponentName = ComponentMap[\\"info-\\" + item.tempName];
return <View key={item.infoId}><ComponentName data={{
item: item
}}></ComponentName></View>;
});
}
}
export default _C;"
`;
20 changes: 19 additions & 1 deletion packages/taro-cli-convertor/__tests__/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,24 @@ import * as taroize from '@tarojs/taroize'
import Convertor from '../src/index'
import { generateMinimalEscapeCode } from './util'

jest.mock('../src/util/index.ts', () => ({
...jest.requireActual('../src/util/index.ts'), // 保留原始的其他函数
printToLogFile: jest.fn(),
}))

jest.mock('fs', () => ({
...jest.requireActual('fs'), // 保留原始的其他函数
appendFile: jest.fn(),
}))

interface ITaroizeOptions {
json?: string
script?: string
wxml?: string
path?: string
rootPath?: string
scriptPath?: string
logFilePath?: string
}

describe('parseAst', () => {
Expand All @@ -24,6 +35,7 @@ describe('parseAst', () => {
* script:index.js的内容
* scriptPath:index.js的绝对路径
* wxml:index.html的内容
* logFilePath:convert.log的文件路径
*/
param = {
json: '{}',
Expand All @@ -32,8 +44,11 @@ describe('parseAst', () => {
script: '',
scriptPath: '',
wxml: '',
logFilePath: ''
}

jest.spyOn(Convertor.prototype, 'init').mockImplementation(() => {})

// new Convertot后会直接执行 init(),为确保 init() 在测试中通过采用 spyOn 去模拟
jest.spyOn(Convertor.prototype, 'getApp').mockImplementation(() => {
Convertor.prototype.entryJSON = entryJSON
Expand Down Expand Up @@ -97,7 +112,10 @@ describe('parseAst', () => {
depComponents: new Set(),
imports: [],
})
expect(ast).toMatchSnapshot()

// 将ast转换为代码
const jsCode = generateMinimalEscapeCode(ast)
expect(jsCode).toMatchSnapshot()
})

// 测试require
Expand Down
Loading

0 comments on commit 24b7257

Please sign in to comment.