UNPKG

@cap-js-community/sap-afc-sdk

Version:

SAP Advanced Financial Closing SDK for CDS

172 lines (157 loc) 4.98 kB
"use strict"; const fs = require("fs"); const path = require("path"); const shelljs = require("shelljs"); process.env.APPROUTER_URL = "https://afcsdk-approuter.cloud.sap"; process.env.SERVER_URL = "https://afcsdk-srv.cloud.sap"; process.env.BROKER_PASSWORD_HASH = "sha256:xxx=:xxx="; process.env.BROKER_SERVICE_ID = "e25a901f-43d1-43c0-bbd6-48b9c6aecb61"; process.env.BROKER_SERVICE_PLAN_ID = "958cbd91-af93-4fdd-a793-16c82ae9e70b"; process.env.CONTAINER_REPOSITORY = "afcsdk.common.repositories.cloud.sap"; process.env.GLOBAL_DOMAIN = "xxx.stage.kyma.ondemand.com"; const project = "afcsdk"; const tempDir = "temp"; const workingDir = path.join(__dirname, "..", tempDir); const projectDir = path.join(workingDir, project); const Commands = { BEGIN: [`cd ${tempDir}`], CDS_NODE: [`npx cds init ${project}`], CDS_JAVA: [`npx cds init ${project} --java`], INSTALL: [`cd ${project}`, "npm install ../../../"], AFC_CF: ["npx afc init cf"], AFC_KYMA: ["npx afc init kyma"], AFC_NODE: ["npx afc add -a broker,stub,mock,sample,test,http"], AFC_JAVA: ["npx afc add -a app,broker,stub,mock,sample,test,http"], END: [], // ["npm test"] }; const Files = { COMMON: [ "package.json", "app/router/xs-app.json", "http/scheduling/provider.cloud.http", "http/scheduling/provider.local.http", ], NODE: [ "srv/broker.json", "srv/catalog.json", "srv/scheduling-processing-service.cds", "srv/scheduling-processing-service.js", "srv/scheduling-provider-service.cds", "srv/scheduling-provider-service.js", "test/scheduling.provider.test.js", ], JAVA: [ ".cdsrc.json", "srv/pom.xml", "srv/src/main/resources/application.yaml", "srv/src/main/java/customer/afcsdk/ApplicationConfig.java", "srv/src/main/java/customer/afcsdk/scheduling/CustomSchedulingProcessingHandler.java", "srv/src/main/java/customer/afcsdk/scheduling/CustomSchedulingProviderHandler.java", "srv/src/test/java/customer/afcsdk/scheduling/SchedulingProviderHandlerTest.java", ], CF: ["mta.yaml"], KYMA: ["chart/Chart.yaml", "chart/values.yaml", "containerize.yaml"], }; process.removeAllListeners("warning"); describe("Build", () => { beforeEach(() => { if (fs.existsSync(workingDir)) { fs.rmSync(workingDir, { recursive: true }); } fs.mkdirSync(workingDir); }); afterAll(() => { if (fs.existsSync(workingDir)) { fs.rmSync(workingDir, { recursive: true }); } }); it("Node / CF", async () => { const result = shelljs.exec( [ ...Commands.BEGIN, ...Commands.CDS_NODE, ...Commands.INSTALL, ...Commands.AFC_CF, ...Commands.AFC_CF, ...Commands.AFC_NODE, ...Commands.AFC_NODE, ...Commands.END, ].join(" && "), ); expect(cleanErr(result.stderr)).toBe(""); expect(result.code).toBe(0); for (const file of [...Files.COMMON, ...Files.NODE, ...Files.CF]) { compareFile(file); } }); it("Node / Kyma", async () => { const result = shelljs.exec( [ ...Commands.BEGIN, ...Commands.CDS_NODE, ...Commands.INSTALL, ...Commands.AFC_KYMA, ...Commands.AFC_KYMA, ...Commands.AFC_NODE, ...Commands.AFC_NODE, ...Commands.END, ].join(" && "), ); expect(cleanErr(result.stderr)).toMatch(/'cds add redis' is not available for Kyma yet/); expect(result.code).toBe(0); for (const file of [...Files.COMMON, ...Files.NODE, ...Files.KYMA]) { compareFile(file); } }); it("Java / CF", async () => { const result = shelljs.exec( [ ...Commands.BEGIN, ...Commands.CDS_JAVA, ...Commands.INSTALL, ...Commands.AFC_CF, ...Commands.AFC_CF, ...Commands.AFC_JAVA, ...Commands.AFC_JAVA, ...Commands.END, ].join(" && "), ); expect(cleanErr(result.stderr)).toBe(""); expect(result.code).toBe(0); for (const file of [...Files.COMMON, ...Files.JAVA, ...Files.CF]) { compareFile(file); } }); it("Java / Kyma", async () => { const result = shelljs.exec( [ ...Commands.BEGIN, ...Commands.CDS_JAVA, ...Commands.INSTALL, ...Commands.AFC_KYMA, ...Commands.AFC_KYMA, ...Commands.AFC_JAVA, ...Commands.AFC_JAVA, ...Commands.END, ].join(" && "), ); expect(cleanErr(result.stderr)).toBe(""); expect(result.code).toBe(0); for (const file of [...Files.COMMON, ...Files.JAVA, ...Files.KYMA]) { compareFile(file); } }); }); function cleanErr(err) { return err.trim(); } function compareFile(file) { let content = fs.readFileSync(path.join(projectDir, file), "utf8"); if (["package.json"].includes(file)) { const json = JSON.parse(content); delete json.dependencies; delete json.devDependencies; content = JSON.stringify(json, null, 2); } expect(content).toMatchSnapshot(); }