86 lines
2.6 KiB
JavaScript
86 lines
2.6 KiB
JavaScript
|
import {getAppApis} from "../src";
|
||
|
import {getMemoryTemplateApi,
|
||
|
createAppDefinitionWithActionsAndTriggers} from "./specHelpers";
|
||
|
import {isFunction} from "lodash";
|
||
|
|
||
|
describe("getAppApis", () => {
|
||
|
|
||
|
const getMemoryAppApis = async () => {
|
||
|
const {templateApi} = getMemoryTemplateApi();
|
||
|
const rootNode = templateApi.getNewRootLevel();
|
||
|
await templateApi.saveApplicationHierarchy(rootNode);
|
||
|
|
||
|
return await getAppApis(templateApi._storeHandle, {});
|
||
|
}
|
||
|
|
||
|
it("should return api factory functions", async () => {
|
||
|
const apis = await getMemoryAppApis();
|
||
|
expect(apis.recordApi).toBeDefined();
|
||
|
expect(apis.templateApi).toBeDefined();
|
||
|
expect(apis.collectionApi).toBeDefined();
|
||
|
expect(apis.indexApi).toBeDefined();
|
||
|
expect(apis.subscribe).toBeDefined();
|
||
|
expect(apis.authApi).toBeDefined();
|
||
|
});
|
||
|
|
||
|
});
|
||
|
|
||
|
|
||
|
describe("getAppApis > initialiseActions", () => {
|
||
|
|
||
|
it("should expose actions when all sources and behvaviours are present", async () => {
|
||
|
const {logs, emails,
|
||
|
call_timers, behaviourSources,
|
||
|
templateApi} = await createAppDefinitionWithActionsAndTriggers();
|
||
|
const {actions} = await getAppApis(
|
||
|
templateApi._storeHandle, behaviourSources);
|
||
|
|
||
|
actions.sendEmail("email");
|
||
|
actions.measureCallTime("calltime");
|
||
|
actions.logMessage("message");
|
||
|
|
||
|
expect(isFunction(actions.sendEmail)).toBeTruthy();
|
||
|
expect(isFunction(actions.measureCallTime)).toBeTruthy();
|
||
|
expect(isFunction(actions.logMessage)).toBeTruthy();
|
||
|
|
||
|
});
|
||
|
|
||
|
it("should throw exception when behaviour source is missing", async () => {
|
||
|
const {behaviourSources, templateApi} = await createAppDefinitionWithActionsAndTriggers();
|
||
|
delete behaviourSources["my-custom-lib"];
|
||
|
|
||
|
let ex;
|
||
|
|
||
|
try {
|
||
|
await getAppApis(
|
||
|
templateApi._storeHandle, behaviourSources);
|
||
|
}
|
||
|
catch (e) {
|
||
|
ex = e;
|
||
|
expect(e.message).toContain("behaviour");
|
||
|
}
|
||
|
|
||
|
expect(ex).toBeDefined();
|
||
|
|
||
|
});
|
||
|
|
||
|
it("should throw exception when behaviour is missing", async () => {
|
||
|
const {behaviourSources, templateApi} = await createAppDefinitionWithActionsAndTriggers();
|
||
|
delete behaviourSources["my-custom-lib"]["send_email"];
|
||
|
|
||
|
let ex;
|
||
|
|
||
|
try {
|
||
|
await getAppApis(
|
||
|
templateApi._storeHandle, behaviourSources);
|
||
|
}
|
||
|
catch (e) {
|
||
|
expect(e.message).toContain("behaviour");
|
||
|
ex = e;
|
||
|
}
|
||
|
|
||
|
expect(ex).toBeDefined();
|
||
|
|
||
|
});
|
||
|
|
||
|
});
|