101 lines
2.6 KiB
TypeScript
101 lines
2.6 KiB
TypeScript
jest.mock("../../threads/automation")
|
|
jest.mock("../../utilities/redis", () => ({
|
|
init: jest.fn(),
|
|
checkTestFlag: () => {
|
|
return false
|
|
},
|
|
shutdown: jest.fn(),
|
|
}))
|
|
|
|
jest.spyOn(global.console, "error")
|
|
|
|
import "../../environment"
|
|
import * as automation from "../index"
|
|
import * as thread from "../../threads/automation"
|
|
import * as triggers from "../triggers"
|
|
import { basicAutomation } from "../../tests/utilities/structures"
|
|
import { wait } from "../../utilities"
|
|
import { makePartial } from "../../tests/utilities"
|
|
import { cleanInputValues } from "../automationUtils"
|
|
import * as setup from "./utilities"
|
|
import { Automation } from "@budibase/types"
|
|
|
|
describe("Run through some parts of the automations system", () => {
|
|
let config = setup.getConfig()
|
|
|
|
beforeAll(async () => {
|
|
await automation.init()
|
|
await config.init()
|
|
})
|
|
|
|
afterAll(async () => {
|
|
await automation.shutdown()
|
|
setup.afterAll()
|
|
})
|
|
|
|
it("should be able to init in builder", async () => {
|
|
const automation: Automation = {
|
|
...basicAutomation(),
|
|
appId: config.appId!,
|
|
}
|
|
const fields: any = { a: 1, appId: config.appId }
|
|
await triggers.externalTrigger(automation, fields)
|
|
await wait(100)
|
|
expect(thread.execute).toHaveBeenCalled()
|
|
})
|
|
|
|
it("should check coercion", async () => {
|
|
const table = await config.createTable()
|
|
const automation: any = basicAutomation()
|
|
automation.definition.trigger.inputs.tableId = table._id
|
|
automation.definition.trigger.stepId = "APP"
|
|
automation.definition.trigger.inputs.fields = { a: "number" }
|
|
const fields: any = {
|
|
appId: config.getAppId(),
|
|
fields: {
|
|
a: "1",
|
|
},
|
|
}
|
|
await triggers.externalTrigger(automation, fields)
|
|
await wait(100)
|
|
expect(thread.execute).toHaveBeenCalledWith(
|
|
makePartial({
|
|
data: {
|
|
event: {
|
|
fields: {
|
|
a: 1,
|
|
},
|
|
},
|
|
},
|
|
}),
|
|
expect.any(Function)
|
|
)
|
|
})
|
|
|
|
it("should be able to clean inputs with the utilities", () => {
|
|
// can't clean without a schema
|
|
let output = cleanInputValues({ a: "1" })
|
|
expect(output.a).toBe("1")
|
|
output = cleanInputValues(
|
|
{ a: "1", b: "true", c: "false", d: 1, e: "help" },
|
|
{
|
|
properties: {
|
|
a: {
|
|
type: "number",
|
|
},
|
|
b: {
|
|
type: "boolean",
|
|
},
|
|
c: {
|
|
type: "boolean",
|
|
},
|
|
},
|
|
}
|
|
)
|
|
expect(output.a).toBe(1)
|
|
expect(output.b).toBe(true)
|
|
expect(output.c).toBe(false)
|
|
expect(output.d).toBe(1)
|
|
})
|
|
})
|