From 7db5461706c739fac673b2466bc2fda7661242e4 Mon Sep 17 00:00:00 2001 From: liujuping Date: Wed, 30 Mar 2022 12:12:47 +0800 Subject: [PATCH] fix: Fix the conversion failure of some props expressions under Slot props of low-code components --- packages/react-renderer/jest.config.js | 5 ---- packages/renderer-core/jest.config.js | 1 - packages/utils/build.test.json | 6 +++++ packages/utils/jest.config.js | 9 +++++++ packages/utils/package.json | 1 + packages/utils/src/schema.ts | 2 +- .../src/__snapshots__/schema.test.ts.snap | 23 ++++++++++++++++ packages/utils/test/src/schema.test.ts | 27 +++++++++++++++++++ 8 files changed, 67 insertions(+), 7 deletions(-) create mode 100644 packages/utils/build.test.json create mode 100644 packages/utils/jest.config.js create mode 100644 packages/utils/test/src/__snapshots__/schema.test.ts.snap create mode 100644 packages/utils/test/src/schema.test.ts diff --git a/packages/react-renderer/jest.config.js b/packages/react-renderer/jest.config.js index 865d30116..00bf21f6d 100644 --- a/packages/react-renderer/jest.config.js +++ b/packages/react-renderer/jest.config.js @@ -1,5 +1,3 @@ -const esModules = ['@recore/obx-react'].join('|'); - module.exports = { // transform: { // '^.+\\.[jt]sx?$': 'babel-jest', @@ -7,9 +5,6 @@ module.exports = { // // '^.+\\.(js|jsx)$': 'babel-jest', // }, // testMatch: ['(/tests?/.*(test))\\.[jt]s$'], - transformIgnorePatterns: [ - `/node_modules/(?!${esModules})/`, - ], moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], collectCoverage: true, collectCoverageFrom: [ diff --git a/packages/renderer-core/jest.config.js b/packages/renderer-core/jest.config.js index 00b2654f9..af6e06512 100644 --- a/packages/renderer-core/jest.config.js +++ b/packages/renderer-core/jest.config.js @@ -1,5 +1,4 @@ const esModules = [ - '@recore/obx-react', '@alilc/lowcode-datasource-engine', ].join('|'); diff --git a/packages/utils/build.test.json b/packages/utils/build.test.json new file mode 100644 index 000000000..dcdc891e9 --- /dev/null +++ b/packages/utils/build.test.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "build-plugin-component", + "@alilc/lowcode-test-mate/plugin/index.ts" + ] +} diff --git a/packages/utils/jest.config.js b/packages/utils/jest.config.js new file mode 100644 index 000000000..0e05687d7 --- /dev/null +++ b/packages/utils/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], + collectCoverage: true, + collectCoverageFrom: [ + 'src/**/*.{ts,tsx}', + '!**/node_modules/**', + '!**/vendor/**', + ], +}; diff --git a/packages/utils/package.json b/packages/utils/package.json index bb913041c..18c8b6015 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -9,6 +9,7 @@ "main": "lib/index.js", "module": "es/index.js", "scripts": { + "test": "build-scripts test --config build.test.json", "build": "build-scripts build --skip-demo" }, "dependencies": { diff --git a/packages/utils/src/schema.ts b/packages/utils/src/schema.ts index cc89838d7..dfb487583 100644 --- a/packages/utils/src/schema.ts +++ b/packages/utils/src/schema.ts @@ -26,7 +26,7 @@ export function compatibleLegaoSchema(props: any): any { type: 'JSSlot', title: (props.value.props as any)?.slotTitle, name: (props.value.props as any)?.slotName, - value: props.value.children, + value: compatibleLegaoSchema(props.value.children), params: (props.value.props as any)?.slotParams, }; } else { diff --git a/packages/utils/test/src/__snapshots__/schema.test.ts.snap b/packages/utils/test/src/__snapshots__/schema.test.ts.snap new file mode 100644 index 000000000..e926c89b3 --- /dev/null +++ b/packages/utils/test/src/__snapshots__/schema.test.ts.snap @@ -0,0 +1,23 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Schema Ut props 1`] = ` +Object { + "props": Object { + "mobileSlot": Object { + "name": undefined, + "params": undefined, + "title": undefined, + "type": "JSSlot", + "value": Array [ + Object { + "loop": Object { + "mock": undefined, + "type": "JSExpression", + "value": "props.content", + }, + }, + ], + }, + }, +} +`; diff --git a/packages/utils/test/src/schema.test.ts b/packages/utils/test/src/schema.test.ts new file mode 100644 index 000000000..138dd7a82 --- /dev/null +++ b/packages/utils/test/src/schema.test.ts @@ -0,0 +1,27 @@ +import { compatibleLegaoSchema } from '../../src/schema'; +describe('Schema Ut', () => { + it('props', () => { + const schema = { + props: { + mobileSlot: { + type: "JSBlock", + value: { + componentName: "Slot", + children: [ + { + loop: { + variable: "props.content", + type: "variable" + }, + } + ], + } + }, + }, + }; + + const result = compatibleLegaoSchema(schema); + expect(result).toMatchSnapshot(); + expect(result.props.mobileSlot.value[0].loop.type).toBe('JSExpression'); + }); +}) \ No newline at end of file