budibase/packages/builder/tests/buildCodeForScreen.spec.js

65 lines
1.4 KiB
JavaScript
Raw Normal View History

import { buildCodeForScreens } from "../src/builderStore/buildCodeForScreens";
describe("buildCodeForScreen",() => {
it("should package _code into runnable function, for simple screen props", () => {
const screen = {
props: {
_id: "1234",
_code: "render('render argument');"
}
}
let renderArg;
const render = (arg) => {
renderArg = arg;
}
const uiFunctions = getFunctions(screen);
const targetfunction = uiFunctions[screen.props._id];
expect(targetfunction).toBeDefined();
targetfunction(render);
expect(renderArg).toBe("render argument");
});
it("should package _code into runnable function, for _children ", () => {
const screen = {
props: {
_id: "parent",
_code: "render('parent argument');",
_children: [
{
_id: "child1",
_code: "render('child 1 argument');"
},
{
_id: "child2",
_code: "render('child 2 argument');"
}
]
}
}
let renderArg;
const render = (arg) => {
renderArg = arg;
}
const uiFunctions = getFunctions(screen);
const targetfunction = uiFunctions["child2"];
expect(targetfunction).toBeDefined();
targetfunction(render);
expect(renderArg).toBe("child 2 argument");
})
});
const getFunctions = (screen) =>
new Function(buildCodeForScreens([screen]))();