89 lines
2.4 KiB
JavaScript
89 lines
2.4 KiB
JavaScript
import { getAppApis } from "../src"
|
|
import {
|
|
getMemoryTemplateApi,
|
|
createAppDefinitionWithActionsAndTriggers,
|
|
} from "./specHelpers"
|
|
import { isFunction } from "lodash"
|
|
|
|
describe("getAppApis", () => {
|
|
const getMemoryAppApis = async () => {
|
|
const { templateApi } = await 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()
|
|
})
|
|
})
|