budibase/packages/core/test/getApis.spec.js

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 } = 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()
})
})