65 lines
1.4 KiB
JavaScript
65 lines
1.4 KiB
JavaScript
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]))();
|