167 lines
6.3 KiB
JavaScript
167 lines
6.3 KiB
JavaScript
|
|
const testAppDef = require("../appPackages/testApp/appDefinition.json");
|
|
const testAccessLevels = require("../appPackages/testApp/access_levels.json");
|
|
const testPages = require("../appPackages/testApp/pages.json");
|
|
const testComponents = require("../appPackages/testApp/customComponents/components.json");
|
|
const testMoreComponents = require("../appPackages/testApp/moreCustomComponents/components.json");
|
|
const statusCodes = require("../utilities/statusCodes");
|
|
const screen1 = require("../appPackages/testApp/components/myTextBox.json");
|
|
const screen2 = require("../appPackages/testApp/components/subfolder/otherTextBox.json");
|
|
const { readJSON, pathExists, unlink } = require("fs-extra");
|
|
|
|
const app = require("./testApp")();
|
|
testComponents.textbox.name = `./customComponents/textbox`;
|
|
testMoreComponents.textbox.name = `./moreCustomComponents/textbox`;
|
|
|
|
beforeAll(async () => {
|
|
|
|
const testComponent = "./appPackages/testApp/components/newTextBox.json";
|
|
const testComponentAfterMove = "./appPackages/testApp/components/anotherSubFolder/newTextBox.json";
|
|
|
|
if(await pathExists(testComponent)) await unlink(testComponent);
|
|
if(await pathExists(testComponentAfterMove)) await unlink(testComponentAfterMove);
|
|
|
|
await app.start();
|
|
});
|
|
afterAll(async () => await app.destroy());
|
|
|
|
|
|
it("/apppackage should get appDefinition", async () => {
|
|
|
|
const {body} = await app.get("/_builder/api/testApp/appPackage")
|
|
.expect(statusCodes.OK);
|
|
|
|
expect(body.appDefinition).toEqual(testAppDef);
|
|
});
|
|
|
|
it("/apppackage should get access levels", async () => {
|
|
|
|
const {body} = await app.get("/_builder/api/testApp/appPackage")
|
|
.expect(statusCodes.OK);
|
|
|
|
expect(body.accessLevels).toEqual(testAccessLevels);
|
|
});
|
|
|
|
it("/apppackage should get pages", async () => {
|
|
|
|
const {body} = await app.get("/_builder/api/testApp/appPackage")
|
|
.expect(statusCodes.OK);
|
|
expect(body.pages).toEqual(testPages);
|
|
});
|
|
|
|
it("/apppackage should get components", async () => {
|
|
|
|
const {body} = await app.get("/_builder/api/testApp/appPackage")
|
|
.expect(statusCodes.OK);
|
|
|
|
expect(body.components["./customComponents/textbox"]).toBeDefined();
|
|
expect(body.components["./moreCustomComponents/textbox"]).toBeDefined();
|
|
|
|
expect(body.components["./customComponents/textbox"])
|
|
.toEqual(testComponents.textbox);
|
|
|
|
expect(body.components["./moreCustomComponents/textbox"])
|
|
.toEqual(testMoreComponents.textbox);
|
|
});
|
|
|
|
it("/apppackage should get screens", async () => {
|
|
|
|
const {body} = await app.get("/_builder/api/testApp/appPackage")
|
|
.expect(statusCodes.OK);
|
|
|
|
const expectedComponents = {
|
|
"myTextBox" : {...screen1, name:"myTextBox"},
|
|
"subfolder/otherTextBox": {...screen2, name:"subfolder/otherTextBox"}
|
|
};
|
|
|
|
expect(body.screens).toEqual(expectedComponents);
|
|
});
|
|
|
|
it("should be able to create new derived component", async () => {
|
|
const newscreen = {
|
|
name: "newTextBox",
|
|
inherits: "./customComponents/textbox",
|
|
props: {
|
|
label: "something"
|
|
}
|
|
};
|
|
|
|
await app.post("/_builder/api/testApp/screen", newscreen)
|
|
.expect(statusCodes.OK);
|
|
|
|
const componentFile = "./appPackages/testApp/components/newTextBox.json";
|
|
expect(await pathExists(componentFile)).toBe(true);
|
|
expect(await readJSON(componentFile)).toEqual(newscreen);
|
|
|
|
});
|
|
|
|
it("should be able to update derived component", async () => {
|
|
const updatedscreen = {
|
|
name: "newTextBox",
|
|
inherits: "./customComponents/textbox",
|
|
props: {
|
|
label: "something else"
|
|
}
|
|
};
|
|
|
|
await app.post("/_builder/api/testApp/screen", updatedscreen)
|
|
.expect(statusCodes.OK);
|
|
|
|
const componentFile = "./appPackages/testApp/components/newTextBox.json";
|
|
expect(await readJSON(componentFile)).toEqual(updatedscreen);
|
|
});
|
|
|
|
it("should be able to rename derived component", async () => {
|
|
await app.patch("/_builder/api/testApp/screen", {
|
|
oldname: "newTextBox", newname: "anotherSubFolder/newTextBox"
|
|
}).expect(statusCodes.OK);
|
|
|
|
const oldcomponentFile = "./appPackages/testApp/components/newTextBox.json";
|
|
const newcomponentFile = "./appPackages/testApp/components/anotherSubFolder/newTextBox.json";
|
|
expect(await pathExists(oldcomponentFile)).toBe(false);
|
|
expect(await pathExists(newcomponentFile)).toBe(true);
|
|
|
|
});
|
|
|
|
it("should be able to delete derived component", async () => {
|
|
await app.delete("/_builder/api/testApp/screen/anotherSubFolder/newTextBox")
|
|
.expect(statusCodes.OK);
|
|
|
|
const componentFile = "./appPackages/testApp/components/anotherSubFolder/newTextBox.json";
|
|
const componentDir = "./appPackages/testApp/components/anotherSubFolder";
|
|
expect(await pathExists(componentFile)).toBe(false);
|
|
expect(await pathExists(componentDir)).toBe(false);
|
|
});
|
|
|
|
it("/savePackage should prepare all necessary client files", async () => {
|
|
|
|
await app.post("/_builder/api/testApp/appPackage", {
|
|
appDefinition: testAppDef,
|
|
accessLevels: testAccessLevels,
|
|
pages: testPages
|
|
})
|
|
.expect(statusCodes.OK);
|
|
|
|
const publicFolderMain = relative => "./appPackages/testApp/public/main" + relative;
|
|
const publicFolderUnauth = relative => "./appPackages/testApp/public/unauthenticated" + relative;
|
|
|
|
expect(await pathExists(publicFolderMain("/index.html"))).toBe(true);
|
|
expect(await pathExists(publicFolderUnauth("/index.html"))).toBe(true);
|
|
|
|
expect(await pathExists(publicFolderMain("/lib/customComponents/index.js"))).toBe(true);
|
|
expect(await pathExists(publicFolderUnauth("/lib/customComponents/index.js"))).toBe(true);
|
|
|
|
expect(await pathExists(publicFolderMain("/lib/moreCustomComponents/index.js"))).toBe(true);
|
|
expect(await pathExists(publicFolderUnauth("/lib/moreCustomComponents/index.js"))).toBe(true);
|
|
|
|
expect(await pathExists(publicFolderMain("/lib/node_modules/@budibase/standard-components/dist/index.js"))).toBe(true);
|
|
expect(await pathExists(publicFolderUnauth("/lib/node_modules/@budibase/standard-components/dist/index.js"))).toBe(true);
|
|
|
|
expect(await pathExists(publicFolderUnauth("/budibase-client.js"))).toBe(true);
|
|
expect(await pathExists(publicFolderUnauth("/clientAppDefinition.js"))).toBe(true);
|
|
|
|
|
|
|
|
|
|
})
|