import CodeGenerator from '../../src'; import * as fs from 'fs'; import * as path from 'path'; const testCaseBaseName = path.basename(__filename, '.test.ts'); test(testCaseBaseName, async () => { const inputSchemaJsonFile = path.join(__dirname, `${testCaseBaseName}.schema.json`); const outputDir = path.join(__dirname, `${testCaseBaseName}.generated`); await exportProject(inputSchemaJsonFile, outputDir); const generatedPackageJsonText = fs.readFileSync( path.join(outputDir, 'demo-project/package.json'), 'utf-8', ); const generatedPackageJson = JSON.parse(generatedPackageJsonText); expect(generatedPackageJson.dependencies).toBeTruthy(); // 里面有的数据源则应该生成对应的 dependencies expect(generatedPackageJson.dependencies).toMatchObject({ '@alilc/lowcode-datasource-engine': 'latest', '@alilc/lowcode-datasource-fetch-handler': 'latest', }); // 里面没有的,则不应该生成对应的 dependencies expect(generatedPackageJson.dependencies).not.toMatchObject({ '@alilc/lowcode-datasource-url-params-handler': 'latest', '@alilc/lowcode-datasource-mtop-handler': 'latest', '@alilc/lowcode-datasource-mopen-handler': 'latest', }); }); function exportProject(inputPath: string, outputPath: string) { const schemaJson = fs.readFileSync(inputPath, { encoding: 'utf8' }); const newSchema = schemaJson; const builder = CodeGenerator.solutions.icejs(); return builder.generateProject(newSchema).then(async (result) => { // displayResultInConsole(result); const publisher = CodeGenerator.publishers.disk(); await publisher.publish({ project: result, outputPath, projectSlug: 'demo-project', createProjectFolder: true, }); return result; }); }