Missed a bunch of spots in the refactor.
This commit is contained in:
parent
924f400992
commit
03e4cfe0b4
|
@ -25,7 +25,7 @@ describe("Execute Bash Automations", () => {
|
||||||
|
|
||||||
it("should use trigger data in bash command and pass output to subsequent steps", async () => {
|
it("should use trigger data in bash command and pass output to subsequent steps", async () => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
.onAppAction({ fields: { command: "hello world" } })
|
.onAppAction()
|
||||||
.bash(
|
.bash(
|
||||||
{ code: "echo '{{ trigger.fields.command }}'" },
|
{ code: "echo '{{ trigger.fields.command }}'" },
|
||||||
{ stepName: "Echo Command" }
|
{ stepName: "Echo Command" }
|
||||||
|
@ -34,7 +34,7 @@ describe("Execute Bash Automations", () => {
|
||||||
{ text: "Bash output was: {{ steps.[Echo Command].stdout }}" },
|
{ text: "Bash output was: {{ steps.[Echo Command].stdout }}" },
|
||||||
{ stepName: "Log Output" }
|
{ stepName: "Log Output" }
|
||||||
)
|
)
|
||||||
.test()
|
.test({ fields: { command: "hello world" } })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.stdout).toEqual("hello world\n")
|
expect(result.steps[0].outputs.stdout).toEqual("hello world\n")
|
||||||
expect(result.steps[1].outputs.message).toContain(
|
expect(result.steps[1].outputs.message).toContain(
|
||||||
|
@ -44,7 +44,7 @@ describe("Execute Bash Automations", () => {
|
||||||
|
|
||||||
it("should chain multiple bash commands using previous outputs", async () => {
|
it("should chain multiple bash commands using previous outputs", async () => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
.onAppAction({ fields: { filename: "testfile.txt" } })
|
.onAppAction()
|
||||||
.bash(
|
.bash(
|
||||||
{ code: "echo 'initial content' > {{ trigger.fields.filename }}" },
|
{ code: "echo 'initial content' > {{ trigger.fields.filename }}" },
|
||||||
{ stepName: "Create File" }
|
{ stepName: "Create File" }
|
||||||
|
@ -57,7 +57,7 @@ describe("Execute Bash Automations", () => {
|
||||||
{ code: "rm {{ trigger.fields.filename }}" },
|
{ code: "rm {{ trigger.fields.filename }}" },
|
||||||
{ stepName: "Cleanup" }
|
{ stepName: "Cleanup" }
|
||||||
)
|
)
|
||||||
.test()
|
.test({ fields: { filename: "testfile.txt" } })
|
||||||
|
|
||||||
expect(result.steps[1].outputs.stdout).toEqual("INITIAL CONTENT\n")
|
expect(result.steps[1].outputs.stdout).toEqual("INITIAL CONTENT\n")
|
||||||
expect(result.steps[1].outputs.success).toEqual(true)
|
expect(result.steps[1].outputs.success).toEqual(true)
|
||||||
|
@ -65,6 +65,7 @@ describe("Execute Bash Automations", () => {
|
||||||
|
|
||||||
it("should integrate bash output with row operations", async () => {
|
it("should integrate bash output with row operations", async () => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.queryRows(
|
.queryRows(
|
||||||
{
|
{
|
||||||
tableId: table._id!,
|
tableId: table._id!,
|
||||||
|
@ -82,7 +83,7 @@ describe("Execute Bash Automations", () => {
|
||||||
{ text: "{{ steps.[Process Row Data].stdout }}" },
|
{ text: "{{ steps.[Process Row Data].stdout }}" },
|
||||||
{ stepName: "Log Result" }
|
{ stepName: "Log Result" }
|
||||||
)
|
)
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[1].outputs.stdout).toContain(
|
expect(result.steps[1].outputs.stdout).toContain(
|
||||||
"Row data: test row - test description"
|
"Row data: test row - test description"
|
||||||
|
@ -94,7 +95,7 @@ describe("Execute Bash Automations", () => {
|
||||||
|
|
||||||
it("should handle bash output in conditional logic", async () => {
|
it("should handle bash output in conditional logic", async () => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
.onAppAction({ fields: { threshold: "5" } })
|
.onAppAction()
|
||||||
.bash(
|
.bash(
|
||||||
{ code: "echo $(( {{ trigger.fields.threshold }} + 5 ))" },
|
{ code: "echo $(( {{ trigger.fields.threshold }} + 5 ))" },
|
||||||
{ stepName: "Calculate Value" }
|
{ stepName: "Calculate Value" }
|
||||||
|
@ -112,7 +113,7 @@ describe("Execute Bash Automations", () => {
|
||||||
{ text: "Value was {{ steps.[Check Value].value }}" },
|
{ text: "Value was {{ steps.[Check Value].value }}" },
|
||||||
{ stepName: "Log Result" }
|
{ stepName: "Log Result" }
|
||||||
)
|
)
|
||||||
.test()
|
.test({ fields: { threshold: "5" } })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.stdout).toEqual("10\n")
|
expect(result.steps[0].outputs.stdout).toEqual("10\n")
|
||||||
expect(result.steps[1].outputs.value).toEqual("high")
|
expect(result.steps[1].outputs.value).toEqual("high")
|
||||||
|
@ -121,12 +122,13 @@ describe("Execute Bash Automations", () => {
|
||||||
|
|
||||||
it("should handle null values gracefully", async () => {
|
it("should handle null values gracefully", async () => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.bash(
|
.bash(
|
||||||
// @ts-expect-error - testing null input
|
// @ts-expect-error - testing null input
|
||||||
{ code: null },
|
{ code: null },
|
||||||
{ stepName: "Null Command" }
|
{ stepName: "Null Command" }
|
||||||
)
|
)
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.stdout).toBe(
|
expect(result.steps[0].outputs.stdout).toBe(
|
||||||
"Budibase bash automation failed: Invalid inputs"
|
"Budibase bash automation failed: Invalid inputs"
|
||||||
|
|
|
@ -41,14 +41,14 @@ describe("test the create row action", () => {
|
||||||
|
|
||||||
it("should be able to run the action", async () => {
|
it("should be able to run the action", async () => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
.onAppAction({ fields: { status: "new" } })
|
.onAppAction()
|
||||||
.serverLog({ text: "Starting create row flow" }, { stepName: "StartLog" })
|
.serverLog({ text: "Starting create row flow" }, { stepName: "StartLog" })
|
||||||
.createRow({ row }, { stepName: "CreateRow" })
|
.createRow({ row }, { stepName: "CreateRow" })
|
||||||
.serverLog(
|
.serverLog(
|
||||||
{ text: "Row created with ID: {{ stepsByName.CreateRow.row._id }}" },
|
{ text: "Row created with ID: {{ stepsByName.CreateRow.row._id }}" },
|
||||||
{ stepName: "CreationLog" }
|
{ stepName: "CreationLog" }
|
||||||
)
|
)
|
||||||
.test()
|
.test({ fields: { status: "new" } })
|
||||||
|
|
||||||
expect(result.steps[1].outputs.success).toBeDefined()
|
expect(result.steps[1].outputs.success).toBeDefined()
|
||||||
expect(result.steps[1].outputs.id).toBeDefined()
|
expect(result.steps[1].outputs.id).toBeDefined()
|
||||||
|
@ -67,7 +67,7 @@ describe("test the create row action", () => {
|
||||||
|
|
||||||
it("should return an error (not throw) when bad info provided", async () => {
|
it("should return an error (not throw) when bad info provided", async () => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
.onAppAction({ fields: { status: "error" } })
|
.onAppAction()
|
||||||
.serverLog({ text: "Starting error test flow" }, { stepName: "StartLog" })
|
.serverLog({ text: "Starting error test flow" }, { stepName: "StartLog" })
|
||||||
.createRow(
|
.createRow(
|
||||||
{
|
{
|
||||||
|
@ -78,14 +78,14 @@ describe("test the create row action", () => {
|
||||||
},
|
},
|
||||||
{ stepName: "CreateRow" }
|
{ stepName: "CreateRow" }
|
||||||
)
|
)
|
||||||
.test()
|
.test({ fields: { status: "error" } })
|
||||||
|
|
||||||
expect(result.steps[1].outputs.success).toEqual(false)
|
expect(result.steps[1].outputs.success).toEqual(false)
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should check invalid inputs return an error", async () => {
|
it("should check invalid inputs return an error", async () => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
.onAppAction({ fields: { status: "invalid" } })
|
.onAppAction()
|
||||||
.serverLog({ text: "Testing invalid input" }, { stepName: "StartLog" })
|
.serverLog({ text: "Testing invalid input" }, { stepName: "StartLog" })
|
||||||
.createRow({ row: {} }, { stepName: "CreateRow" })
|
.createRow({ row: {} }, { stepName: "CreateRow" })
|
||||||
.filter({
|
.filter({
|
||||||
|
@ -97,7 +97,7 @@ describe("test the create row action", () => {
|
||||||
{ text: "This log should not appear" },
|
{ text: "This log should not appear" },
|
||||||
{ stepName: "SkippedLog" }
|
{ stepName: "SkippedLog" }
|
||||||
)
|
)
|
||||||
.test()
|
.test({ fields: { status: "invalid" } })
|
||||||
|
|
||||||
expect(result.steps[1].outputs.success).toEqual(false)
|
expect(result.steps[1].outputs.success).toEqual(false)
|
||||||
expect(result.steps.length).toBeLessThan(4)
|
expect(result.steps.length).toBeLessThan(4)
|
||||||
|
@ -123,7 +123,7 @@ describe("test the create row action", () => {
|
||||||
|
|
||||||
attachmentRow.file_attachment = attachmentObject
|
attachmentRow.file_attachment = attachmentObject
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
.onAppAction({ fields: { type: "attachment" } })
|
.onAppAction()
|
||||||
.serverLog(
|
.serverLog(
|
||||||
{ text: "Processing attachment upload" },
|
{ text: "Processing attachment upload" },
|
||||||
{ stepName: "StartLog" }
|
{ stepName: "StartLog" }
|
||||||
|
@ -140,7 +140,7 @@ describe("test the create row action", () => {
|
||||||
},
|
},
|
||||||
{ stepName: "UploadLog" }
|
{ stepName: "UploadLog" }
|
||||||
)
|
)
|
||||||
.test()
|
.test({ fields: { type: "attachment" } })
|
||||||
|
|
||||||
expect(result.steps[1].outputs.success).toEqual(true)
|
expect(result.steps[1].outputs.success).toEqual(true)
|
||||||
expect(result.steps[1].outputs.row.file_attachment[0]).toHaveProperty("key")
|
expect(result.steps[1].outputs.row.file_attachment[0]).toHaveProperty("key")
|
||||||
|
@ -174,7 +174,7 @@ describe("test the create row action", () => {
|
||||||
|
|
||||||
attachmentRow.single_file_attachment = attachmentObject
|
attachmentRow.single_file_attachment = attachmentObject
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
.onAppAction({ fields: { type: "single-attachment" } })
|
.onAppAction()
|
||||||
.serverLog(
|
.serverLog(
|
||||||
{ text: "Processing single attachment" },
|
{ text: "Processing single attachment" },
|
||||||
{ stepName: "StartLog" }
|
{ stepName: "StartLog" }
|
||||||
|
@ -209,7 +209,7 @@ describe("test the create row action", () => {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.test()
|
.test({ fields: { type: "single-attachment" } })
|
||||||
|
|
||||||
expect(result.steps[1].outputs.success).toEqual(true)
|
expect(result.steps[1].outputs.success).toEqual(true)
|
||||||
expect(result.steps[1].outputs.row.single_file_attachment).toHaveProperty(
|
expect(result.steps[1].outputs.row.single_file_attachment).toHaveProperty(
|
||||||
|
@ -245,7 +245,7 @@ describe("test the create row action", () => {
|
||||||
|
|
||||||
attachmentRow.single_file_attachment = attachmentObject
|
attachmentRow.single_file_attachment = attachmentObject
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
.onAppAction({ fields: { type: "invalid-attachment" } })
|
.onAppAction()
|
||||||
.serverLog(
|
.serverLog(
|
||||||
{ text: "Testing invalid attachment keys" },
|
{ text: "Testing invalid attachment keys" },
|
||||||
{ stepName: "StartLog" }
|
{ stepName: "StartLog" }
|
||||||
|
@ -278,7 +278,7 @@ describe("test the create row action", () => {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.test()
|
.test({ fields: { type: "invalid-attachment" } })
|
||||||
|
|
||||||
expect(result.steps[1].outputs.success).toEqual(false)
|
expect(result.steps[1].outputs.success).toEqual(false)
|
||||||
expect(result.steps[1].outputs.response).toEqual(
|
expect(result.steps[1].outputs.response).toEqual(
|
||||||
|
|
|
@ -16,7 +16,10 @@ describe("test the delay logic", () => {
|
||||||
const time = 100
|
const time = 100
|
||||||
const before = performance.now()
|
const before = performance.now()
|
||||||
|
|
||||||
await createAutomationBuilder(config).delay({ time }).run()
|
await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
|
.delay({ time })
|
||||||
|
.test({ fields: {} })
|
||||||
|
|
||||||
const now = performance.now()
|
const now = performance.now()
|
||||||
|
|
||||||
|
|
|
@ -21,12 +21,13 @@ describe("test the delete row action", () => {
|
||||||
|
|
||||||
it("should be able to run the delete row action", async () => {
|
it("should be able to run the delete row action", async () => {
|
||||||
await createAutomationBuilder(config)
|
await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.deleteRow({
|
.deleteRow({
|
||||||
tableId: table._id!,
|
tableId: table._id!,
|
||||||
id: row._id!,
|
id: row._id!,
|
||||||
revision: row._rev,
|
revision: row._rev,
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
await config.api.row.get(table._id!, row._id!, {
|
await config.api.row.get(table._id!, row._id!, {
|
||||||
status: 404,
|
status: 404,
|
||||||
|
@ -35,20 +36,22 @@ describe("test the delete row action", () => {
|
||||||
|
|
||||||
it("should check invalid inputs return an error", async () => {
|
it("should check invalid inputs return an error", async () => {
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.deleteRow({ tableId: "", id: "", revision: "" })
|
.deleteRow({ tableId: "", id: "", revision: "" })
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(results.steps[0].outputs.success).toEqual(false)
|
expect(results.steps[0].outputs.success).toEqual(false)
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should return an error when table doesn't exist", async () => {
|
it("should return an error when table doesn't exist", async () => {
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.deleteRow({
|
.deleteRow({
|
||||||
tableId: "invalid",
|
tableId: "invalid",
|
||||||
id: "invalid",
|
id: "invalid",
|
||||||
revision: "invalid",
|
revision: "invalid",
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(results.steps[0].outputs.success).toEqual(false)
|
expect(results.steps[0].outputs.success).toEqual(false)
|
||||||
})
|
})
|
||||||
|
|
|
@ -20,12 +20,13 @@ describe("test the outgoing webhook action", () => {
|
||||||
it("should be able to run the action", async () => {
|
it("should be able to run the action", async () => {
|
||||||
nock("http://www.example.com/").post("/").reply(200, { foo: "bar" })
|
nock("http://www.example.com/").post("/").reply(200, { foo: "bar" })
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.discord({
|
.discord({
|
||||||
url: "http://www.example.com",
|
url: "http://www.example.com",
|
||||||
username: "joe_bloggs",
|
username: "joe_bloggs",
|
||||||
content: "Hello, world",
|
content: "Hello, world",
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
expect(result.steps[0].outputs.response.foo).toEqual("bar")
|
expect(result.steps[0].outputs.response.foo).toEqual("bar")
|
||||||
expect(result.steps[0].outputs.success).toEqual(true)
|
expect(result.steps[0].outputs.success).toEqual(true)
|
||||||
})
|
})
|
||||||
|
|
|
@ -43,8 +43,9 @@ describe("test the filter logic", () => {
|
||||||
]
|
]
|
||||||
it.each(pass)("should pass %p %p %p", async (field, condition, value) => {
|
it.each(pass)("should pass %p %p %p", async (field, condition, value) => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.filter({ field, condition: stringToFilterCondition(condition), value })
|
.filter({ field, condition: stringToFilterCondition(condition), value })
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.result).toEqual(true)
|
expect(result.steps[0].outputs.result).toEqual(true)
|
||||||
expect(result.steps[0].outputs.success).toEqual(true)
|
expect(result.steps[0].outputs.success).toEqual(true)
|
||||||
|
@ -60,8 +61,9 @@ describe("test the filter logic", () => {
|
||||||
]
|
]
|
||||||
it.each(fail)("should fail %p %p %p", async (field, condition, value) => {
|
it.each(fail)("should fail %p %p %p", async (field, condition, value) => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.filter({ field, condition: stringToFilterCondition(condition), value })
|
.filter({ field, condition: stringToFilterCondition(condition), value })
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.result).toEqual(false)
|
expect(result.steps[0].outputs.result).toEqual(false)
|
||||||
expect(result.steps[0].outputs.success).toEqual(true)
|
expect(result.steps[0].outputs.success).toEqual(true)
|
||||||
|
|
|
@ -73,17 +73,7 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
|
|
||||||
it("should run an automation with a trigger, loop, and create row step", async () => {
|
it("should run an automation with a trigger, loop, and create row step", async () => {
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
.onRowSaved(
|
.onRowSaved({ tableId: table._id! })
|
||||||
{ tableId: table._id! },
|
|
||||||
{
|
|
||||||
row: {
|
|
||||||
name: "Trigger Row",
|
|
||||||
description: "This row triggers the automation",
|
|
||||||
},
|
|
||||||
id: "1234",
|
|
||||||
revision: "1",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.loop({
|
.loop({
|
||||||
option: LoopStepType.ARRAY,
|
option: LoopStepType.ARRAY,
|
||||||
binding: [1, 2, 3],
|
binding: [1, 2, 3],
|
||||||
|
@ -95,7 +85,14 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
tableId: table._id,
|
tableId: table._id,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.test()
|
.test({
|
||||||
|
row: {
|
||||||
|
name: "Trigger Row",
|
||||||
|
description: "This row triggers the automation",
|
||||||
|
},
|
||||||
|
id: "1234",
|
||||||
|
revision: "1",
|
||||||
|
})
|
||||||
|
|
||||||
expect(results.trigger).toBeDefined()
|
expect(results.trigger).toBeDefined()
|
||||||
expect(results.steps).toHaveLength(1)
|
expect(results.steps).toHaveLength(1)
|
||||||
|
@ -116,17 +113,7 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
|
|
||||||
it("should run an automation where a loop step is between two normal steps to ensure context correctness", async () => {
|
it("should run an automation where a loop step is between two normal steps to ensure context correctness", async () => {
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
.onRowSaved(
|
.onRowSaved({ tableId: table._id! })
|
||||||
{ tableId: table._id! },
|
|
||||||
{
|
|
||||||
row: {
|
|
||||||
name: "Trigger Row",
|
|
||||||
description: "This row triggers the automation",
|
|
||||||
},
|
|
||||||
id: "1234",
|
|
||||||
revision: "1",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.queryRows({
|
.queryRows({
|
||||||
tableId: table._id!,
|
tableId: table._id!,
|
||||||
})
|
})
|
||||||
|
@ -136,7 +123,14 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
})
|
})
|
||||||
.serverLog({ text: "Message {{loop.currentItem}}" })
|
.serverLog({ text: "Message {{loop.currentItem}}" })
|
||||||
.serverLog({ text: "{{steps.1.rows.0._id}}" })
|
.serverLog({ text: "{{steps.1.rows.0._id}}" })
|
||||||
.test()
|
.test({
|
||||||
|
row: {
|
||||||
|
name: "Trigger Row",
|
||||||
|
description: "This row triggers the automation",
|
||||||
|
},
|
||||||
|
id: "1234",
|
||||||
|
revision: "1",
|
||||||
|
})
|
||||||
|
|
||||||
results.steps[1].outputs.items.forEach(
|
results.steps[1].outputs.items.forEach(
|
||||||
(output: ServerLogStepOutputs, index: number) => {
|
(output: ServerLogStepOutputs, index: number) => {
|
||||||
|
@ -152,12 +146,13 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
|
|
||||||
it("if an incorrect type is passed to the loop it should return an error", async () => {
|
it("if an incorrect type is passed to the loop it should return an error", async () => {
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.loop({
|
.loop({
|
||||||
option: LoopStepType.ARRAY,
|
option: LoopStepType.ARRAY,
|
||||||
binding: "1, 2, 3",
|
binding: "1, 2, 3",
|
||||||
})
|
})
|
||||||
.serverLog({ text: "Message {{loop.currentItem}}" })
|
.serverLog({ text: "Message {{loop.currentItem}}" })
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(results.steps[0].outputs).toEqual({
|
expect(results.steps[0].outputs).toEqual({
|
||||||
success: false,
|
success: false,
|
||||||
|
@ -167,13 +162,14 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
|
|
||||||
it("ensure the loop stops if the failure condition is reached", async () => {
|
it("ensure the loop stops if the failure condition is reached", async () => {
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.loop({
|
.loop({
|
||||||
option: LoopStepType.ARRAY,
|
option: LoopStepType.ARRAY,
|
||||||
binding: ["test", "test2", "test3"],
|
binding: ["test", "test2", "test3"],
|
||||||
failure: "test2",
|
failure: "test2",
|
||||||
})
|
})
|
||||||
.serverLog({ text: "Message {{loop.currentItem}}" })
|
.serverLog({ text: "Message {{loop.currentItem}}" })
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(results.steps[0].outputs).toEqual(
|
expect(results.steps[0].outputs).toEqual(
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
|
@ -185,6 +181,7 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
|
|
||||||
it("ensure the loop stops if the max iterations are reached", async () => {
|
it("ensure the loop stops if the max iterations are reached", async () => {
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.loop({
|
.loop({
|
||||||
option: LoopStepType.ARRAY,
|
option: LoopStepType.ARRAY,
|
||||||
binding: ["test", "test2", "test3"],
|
binding: ["test", "test2", "test3"],
|
||||||
|
@ -192,13 +189,14 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
})
|
})
|
||||||
.serverLog({ text: "{{loop.currentItem}}" })
|
.serverLog({ text: "{{loop.currentItem}}" })
|
||||||
.serverLog({ text: "{{steps.1.iterations}}" })
|
.serverLog({ text: "{{steps.1.iterations}}" })
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(results.steps[0].outputs.iterations).toBe(2)
|
expect(results.steps[0].outputs.iterations).toBe(2)
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should run an automation with loop and max iterations to ensure context correctness further down the tree", async () => {
|
it("should run an automation with loop and max iterations to ensure context correctness further down the tree", async () => {
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.loop({
|
.loop({
|
||||||
option: LoopStepType.ARRAY,
|
option: LoopStepType.ARRAY,
|
||||||
binding: ["test", "test2", "test3"],
|
binding: ["test", "test2", "test3"],
|
||||||
|
@ -206,24 +204,14 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
})
|
})
|
||||||
.serverLog({ text: "{{loop.currentItem}}" })
|
.serverLog({ text: "{{loop.currentItem}}" })
|
||||||
.serverLog({ text: "{{steps.1.iterations}}" })
|
.serverLog({ text: "{{steps.1.iterations}}" })
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(results.steps[1].outputs.message).toContain("- 2")
|
expect(results.steps[1].outputs.message).toContain("- 2")
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should run an automation where a loop is successfully run twice", async () => {
|
it("should run an automation where a loop is successfully run twice", async () => {
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
.onRowSaved(
|
.onRowSaved({ tableId: table._id! })
|
||||||
{ tableId: table._id! },
|
|
||||||
{
|
|
||||||
row: {
|
|
||||||
name: "Trigger Row",
|
|
||||||
description: "This row triggers the automation",
|
|
||||||
},
|
|
||||||
id: "1234",
|
|
||||||
revision: "1",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.loop({
|
.loop({
|
||||||
option: LoopStepType.ARRAY,
|
option: LoopStepType.ARRAY,
|
||||||
binding: [1, 2, 3],
|
binding: [1, 2, 3],
|
||||||
|
@ -240,7 +228,14 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
binding: "Message 1,Message 2,Message 3",
|
binding: "Message 1,Message 2,Message 3",
|
||||||
})
|
})
|
||||||
.serverLog({ text: "{{loop.currentItem}}" })
|
.serverLog({ text: "{{loop.currentItem}}" })
|
||||||
.test()
|
.test({
|
||||||
|
row: {
|
||||||
|
name: "Trigger Row",
|
||||||
|
description: "This row triggers the automation",
|
||||||
|
},
|
||||||
|
id: "1234",
|
||||||
|
revision: "1",
|
||||||
|
})
|
||||||
|
|
||||||
expect(results.trigger).toBeDefined()
|
expect(results.trigger).toBeDefined()
|
||||||
expect(results.steps).toHaveLength(2)
|
expect(results.steps).toHaveLength(2)
|
||||||
|
@ -275,6 +270,7 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
|
|
||||||
it("should run an automation where a loop is used twice to ensure context correctness further down the tree", async () => {
|
it("should run an automation where a loop is used twice to ensure context correctness further down the tree", async () => {
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.loop({
|
.loop({
|
||||||
option: LoopStepType.ARRAY,
|
option: LoopStepType.ARRAY,
|
||||||
binding: [1, 2, 3],
|
binding: [1, 2, 3],
|
||||||
|
@ -287,7 +283,7 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
})
|
})
|
||||||
.serverLog({ text: "{{loop.currentItem}}" })
|
.serverLog({ text: "{{loop.currentItem}}" })
|
||||||
.serverLog({ text: "{{steps.3.iterations}}" })
|
.serverLog({ text: "{{steps.3.iterations}}" })
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
// We want to ensure that bindings are corr
|
// We want to ensure that bindings are corr
|
||||||
expect(results.steps[1].outputs.message).toContain("- 3")
|
expect(results.steps[1].outputs.message).toContain("- 3")
|
||||||
|
@ -296,6 +292,7 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
|
|
||||||
it("should use automation names to loop with", async () => {
|
it("should use automation names to loop with", async () => {
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.loop(
|
.loop(
|
||||||
{
|
{
|
||||||
option: LoopStepType.ARRAY,
|
option: LoopStepType.ARRAY,
|
||||||
|
@ -311,7 +308,7 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
{ text: "{{steps.FirstLoopLog.iterations}}" },
|
{ text: "{{steps.FirstLoopLog.iterations}}" },
|
||||||
{ stepName: "FirstLoopIterationLog" }
|
{ stepName: "FirstLoopIterationLog" }
|
||||||
)
|
)
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(results.steps[1].outputs.message).toContain("- 3")
|
expect(results.steps[1].outputs.message).toContain("- 3")
|
||||||
})
|
})
|
||||||
|
@ -347,6 +344,7 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
await config.api.row.bulkImport(table._id!, { rows })
|
await config.api.row.bulkImport(table._id!, { rows })
|
||||||
|
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.queryRows({
|
.queryRows({
|
||||||
tableId: table._id!,
|
tableId: table._id!,
|
||||||
})
|
})
|
||||||
|
@ -366,7 +364,7 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
.queryRows({
|
.queryRows({
|
||||||
tableId: table._id!,
|
tableId: table._id!,
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
const expectedRows = [
|
const expectedRows = [
|
||||||
{ name: "Updated Row 1", value: 1 },
|
{ name: "Updated Row 1", value: 1 },
|
||||||
|
@ -426,6 +424,7 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
await config.api.row.bulkImport(table._id!, { rows })
|
await config.api.row.bulkImport(table._id!, { rows })
|
||||||
|
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.queryRows(
|
.queryRows(
|
||||||
{
|
{
|
||||||
tableId: table._id!,
|
tableId: table._id!,
|
||||||
|
@ -448,7 +447,7 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
.queryRows({
|
.queryRows({
|
||||||
tableId: table._id!,
|
tableId: table._id!,
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
const expectedRows = [
|
const expectedRows = [
|
||||||
{ name: "Updated Row 1", value: 1 },
|
{ name: "Updated Row 1", value: 1 },
|
||||||
|
@ -508,6 +507,7 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
await config.api.row.bulkImport(table._id!, { rows })
|
await config.api.row.bulkImport(table._id!, { rows })
|
||||||
|
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.queryRows({
|
.queryRows({
|
||||||
tableId: table._id!,
|
tableId: table._id!,
|
||||||
})
|
})
|
||||||
|
@ -522,7 +522,7 @@ describe("Attempt to run a basic loop automation", () => {
|
||||||
.queryRows({
|
.queryRows({
|
||||||
tableId: table._id!,
|
tableId: table._id!,
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(results.steps).toHaveLength(3)
|
expect(results.steps).toHaveLength(3)
|
||||||
|
|
||||||
|
|
|
@ -20,11 +20,12 @@ describe("test the outgoing webhook action", () => {
|
||||||
it("should be able to run the action", async () => {
|
it("should be able to run the action", async () => {
|
||||||
nock("http://www.example.com/").post("/").reply(200, { foo: "bar" })
|
nock("http://www.example.com/").post("/").reply(200, { foo: "bar" })
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.make({
|
.make({
|
||||||
url: "http://www.example.com",
|
url: "http://www.example.com",
|
||||||
body: null,
|
body: null,
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.response.foo).toEqual("bar")
|
expect(result.steps[0].outputs.response.foo).toEqual("bar")
|
||||||
expect(result.steps[0].outputs.success).toEqual(true)
|
expect(result.steps[0].outputs.success).toEqual(true)
|
||||||
|
@ -46,11 +47,12 @@ describe("test the outgoing webhook action", () => {
|
||||||
.reply(200, { foo: "bar" })
|
.reply(200, { foo: "bar" })
|
||||||
|
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.make({
|
.make({
|
||||||
body: { value: JSON.stringify(payload) },
|
body: { value: JSON.stringify(payload) },
|
||||||
url: "http://www.example.com",
|
url: "http://www.example.com",
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.response.foo).toEqual("bar")
|
expect(result.steps[0].outputs.response.foo).toEqual("bar")
|
||||||
expect(result.steps[0].outputs.success).toEqual(true)
|
expect(result.steps[0].outputs.success).toEqual(true)
|
||||||
|
@ -58,11 +60,12 @@ describe("test the outgoing webhook action", () => {
|
||||||
|
|
||||||
it("should return a 400 if the JSON payload string is malformed", async () => {
|
it("should return a 400 if the JSON payload string is malformed", async () => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.make({
|
.make({
|
||||||
body: { value: "{ invalid json }" },
|
body: { value: "{ invalid json }" },
|
||||||
url: "http://www.example.com",
|
url: "http://www.example.com",
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.httpStatus).toEqual(400)
|
expect(result.steps[0].outputs.httpStatus).toEqual(400)
|
||||||
expect(result.steps[0].outputs.response).toEqual("Invalid payload JSON")
|
expect(result.steps[0].outputs.response).toEqual("Invalid payload JSON")
|
||||||
|
|
|
@ -21,12 +21,13 @@ describe("test the outgoing webhook action", () => {
|
||||||
it("should be able to run the action and default to 'get'", async () => {
|
it("should be able to run the action and default to 'get'", async () => {
|
||||||
nock("http://www.example.com/").get("/").reply(200, { foo: "bar" })
|
nock("http://www.example.com/").get("/").reply(200, { foo: "bar" })
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.n8n({
|
.n8n({
|
||||||
url: "http://www.example.com",
|
url: "http://www.example.com",
|
||||||
body: { test: "IGNORE_ME" },
|
body: { test: "IGNORE_ME" },
|
||||||
authorization: "",
|
authorization: "",
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.response).toEqual({ foo: "bar" })
|
expect(result.steps[0].outputs.response).toEqual({ foo: "bar" })
|
||||||
expect(result.steps[0].outputs.httpStatus).toEqual(200)
|
expect(result.steps[0].outputs.httpStatus).toEqual(200)
|
||||||
|
@ -39,26 +40,28 @@ describe("test the outgoing webhook action", () => {
|
||||||
.reply(200)
|
.reply(200)
|
||||||
|
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.n8n({
|
.n8n({
|
||||||
url: "http://www.example.com",
|
url: "http://www.example.com",
|
||||||
body: { value: JSON.stringify({ name: "Adam", age: 9 }) },
|
body: { value: JSON.stringify({ name: "Adam", age: 9 }) },
|
||||||
method: HttpMethod.POST,
|
method: HttpMethod.POST,
|
||||||
authorization: "",
|
authorization: "",
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.success).toEqual(true)
|
expect(result.steps[0].outputs.success).toEqual(true)
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should return a 400 if the JSON payload string is malformed", async () => {
|
it("should return a 400 if the JSON payload string is malformed", async () => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.n8n({
|
.n8n({
|
||||||
url: "http://www.example.com",
|
url: "http://www.example.com",
|
||||||
body: { value: "{ value1 1 }" },
|
body: { value: "{ value1 1 }" },
|
||||||
method: HttpMethod.POST,
|
method: HttpMethod.POST,
|
||||||
authorization: "",
|
authorization: "",
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.httpStatus).toEqual(400)
|
expect(result.steps[0].outputs.httpStatus).toEqual(400)
|
||||||
expect(result.steps[0].outputs.response).toEqual("Invalid payload JSON")
|
expect(result.steps[0].outputs.response).toEqual("Invalid payload JSON")
|
||||||
|
@ -71,13 +74,14 @@ describe("test the outgoing webhook action", () => {
|
||||||
.reply(200)
|
.reply(200)
|
||||||
|
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.n8n({
|
.n8n({
|
||||||
url: "http://www.example.com",
|
url: "http://www.example.com",
|
||||||
method: HttpMethod.HEAD,
|
method: HttpMethod.HEAD,
|
||||||
body: { test: "IGNORE_ME" },
|
body: { test: "IGNORE_ME" },
|
||||||
authorization: "",
|
authorization: "",
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.success).toEqual(true)
|
expect(result.steps[0].outputs.success).toEqual(true)
|
||||||
})
|
})
|
||||||
|
|
|
@ -24,13 +24,14 @@ describe("test the outgoing webhook action", () => {
|
||||||
.reply(200, { foo: "bar" })
|
.reply(200, { foo: "bar" })
|
||||||
|
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.outgoingWebhook({
|
.outgoingWebhook({
|
||||||
requestMethod: RequestType.POST,
|
requestMethod: RequestType.POST,
|
||||||
url: "http://www.example.com",
|
url: "http://www.example.com",
|
||||||
requestBody: JSON.stringify({ a: 1 }),
|
requestBody: JSON.stringify({ a: 1 }),
|
||||||
headers: {},
|
headers: {},
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.success).toEqual(true)
|
expect(result.steps[0].outputs.success).toEqual(true)
|
||||||
expect(result.steps[0].outputs.httpStatus).toEqual(200)
|
expect(result.steps[0].outputs.httpStatus).toEqual(200)
|
||||||
|
@ -39,13 +40,14 @@ describe("test the outgoing webhook action", () => {
|
||||||
|
|
||||||
it("should return an error if something goes wrong in fetch", async () => {
|
it("should return an error if something goes wrong in fetch", async () => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.outgoingWebhook({
|
.outgoingWebhook({
|
||||||
requestMethod: RequestType.GET,
|
requestMethod: RequestType.GET,
|
||||||
url: "www.invalid.com",
|
url: "www.invalid.com",
|
||||||
requestBody: "",
|
requestBody: "",
|
||||||
headers: {},
|
headers: {},
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
expect(result.steps[0].outputs.success).toEqual(false)
|
expect(result.steps[0].outputs.success).toEqual(false)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -14,8 +14,9 @@ describe("test the server log action", () => {
|
||||||
|
|
||||||
it("should be able to log the text", async () => {
|
it("should be able to log the text", async () => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.serverLog({ text: "Hello World" })
|
.serverLog({ text: "Hello World" })
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
expect(result.steps[0].outputs.message).toEqual(
|
expect(result.steps[0].outputs.message).toEqual(
|
||||||
`App ${config.getAppId()} - Hello World`
|
`App ${config.getAppId()} - Hello World`
|
||||||
)
|
)
|
||||||
|
|
|
@ -17,24 +17,27 @@ describe("Test triggering an automation from another automation", () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should trigger an other server log automation", async () => {
|
it("should trigger an other server log automation", async () => {
|
||||||
const automation = await createAutomationBuilder(config)
|
const { automation } = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.serverLog({ text: "Hello World" })
|
.serverLog({ text: "Hello World" })
|
||||||
.save()
|
.save()
|
||||||
|
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.triggerAutomationRun({
|
.triggerAutomationRun({
|
||||||
automation: {
|
automation: {
|
||||||
automationId: automation._id!,
|
automationId: automation._id!,
|
||||||
},
|
},
|
||||||
timeout: env.getDefaults().AUTOMATION_THREAD_TIMEOUT,
|
timeout: env.getDefaults().AUTOMATION_THREAD_TIMEOUT,
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.success).toBe(true)
|
expect(result.steps[0].outputs.success).toBe(true)
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should fail gracefully if the automation id is incorrect", async () => {
|
it("should fail gracefully if the automation id is incorrect", async () => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.triggerAutomationRun({
|
.triggerAutomationRun({
|
||||||
automation: {
|
automation: {
|
||||||
// @ts-expect-error - incorrect on purpose
|
// @ts-expect-error - incorrect on purpose
|
||||||
|
@ -42,7 +45,7 @@ describe("Test triggering an automation from another automation", () => {
|
||||||
},
|
},
|
||||||
timeout: env.getDefaults().AUTOMATION_THREAD_TIMEOUT,
|
timeout: env.getDefaults().AUTOMATION_THREAD_TIMEOUT,
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.success).toBe(false)
|
expect(result.steps[0].outputs.success).toBe(false)
|
||||||
})
|
})
|
||||||
|
|
|
@ -31,6 +31,7 @@ describe("test the update row action", () => {
|
||||||
|
|
||||||
it("should be able to run the update row action", async () => {
|
it("should be able to run the update row action", async () => {
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.updateRow({
|
.updateRow({
|
||||||
rowId: row._id!,
|
rowId: row._id!,
|
||||||
row: {
|
row: {
|
||||||
|
@ -40,7 +41,7 @@ describe("test the update row action", () => {
|
||||||
},
|
},
|
||||||
meta: {},
|
meta: {},
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(results.steps[0].outputs.success).toEqual(true)
|
expect(results.steps[0].outputs.success).toEqual(true)
|
||||||
const updatedRow = await config.api.row.get(
|
const updatedRow = await config.api.row.get(
|
||||||
|
@ -53,20 +54,22 @@ describe("test the update row action", () => {
|
||||||
|
|
||||||
it("should check invalid inputs return an error", async () => {
|
it("should check invalid inputs return an error", async () => {
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.updateRow({ meta: {}, row: {}, rowId: "" })
|
.updateRow({ meta: {}, row: {}, rowId: "" })
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(results.steps[0].outputs.success).toEqual(false)
|
expect(results.steps[0].outputs.success).toEqual(false)
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should return an error when table doesn't exist", async () => {
|
it("should return an error when table doesn't exist", async () => {
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.updateRow({
|
.updateRow({
|
||||||
row: { _id: "invalid" },
|
row: { _id: "invalid" },
|
||||||
rowId: "invalid",
|
rowId: "invalid",
|
||||||
meta: {},
|
meta: {},
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(results.steps[0].outputs.success).toEqual(false)
|
expect(results.steps[0].outputs.success).toEqual(false)
|
||||||
})
|
})
|
||||||
|
@ -104,6 +107,7 @@ describe("test the update row action", () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.updateRow({
|
.updateRow({
|
||||||
rowId: row._id!,
|
rowId: row._id!,
|
||||||
row: {
|
row: {
|
||||||
|
@ -115,7 +119,7 @@ describe("test the update row action", () => {
|
||||||
},
|
},
|
||||||
meta: {},
|
meta: {},
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(results.steps[0].outputs.success).toEqual(true)
|
expect(results.steps[0].outputs.success).toEqual(true)
|
||||||
|
|
||||||
|
@ -157,6 +161,7 @@ describe("test the update row action", () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
const results = await createAutomationBuilder(config)
|
const results = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.updateRow({
|
.updateRow({
|
||||||
rowId: row._id!,
|
rowId: row._id!,
|
||||||
row: {
|
row: {
|
||||||
|
@ -174,7 +179,7 @@ describe("test the update row action", () => {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(results.steps[0].outputs.success).toEqual(true)
|
expect(results.steps[0].outputs.success).toEqual(true)
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,9 @@ describe("test the outgoing webhook action", () => {
|
||||||
nock("http://www.example.com/").post("/").reply(200, { foo: "bar" })
|
nock("http://www.example.com/").post("/").reply(200, { foo: "bar" })
|
||||||
|
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.zapier({ url: "http://www.example.com", body: null })
|
.zapier({ url: "http://www.example.com", body: null })
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.response.foo).toEqual("bar")
|
expect(result.steps[0].outputs.response.foo).toEqual("bar")
|
||||||
expect(result.steps[0].outputs.success).toEqual(true)
|
expect(result.steps[0].outputs.success).toEqual(true)
|
||||||
|
@ -44,11 +45,12 @@ describe("test the outgoing webhook action", () => {
|
||||||
.reply(200, { foo: "bar" })
|
.reply(200, { foo: "bar" })
|
||||||
|
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.zapier({
|
.zapier({
|
||||||
url: "http://www.example.com",
|
url: "http://www.example.com",
|
||||||
body: { value: JSON.stringify(payload) },
|
body: { value: JSON.stringify(payload) },
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.response.foo).toEqual("bar")
|
expect(result.steps[0].outputs.response.foo).toEqual("bar")
|
||||||
expect(result.steps[0].outputs.success).toEqual(true)
|
expect(result.steps[0].outputs.success).toEqual(true)
|
||||||
|
@ -56,11 +58,12 @@ describe("test the outgoing webhook action", () => {
|
||||||
|
|
||||||
it("should return a 400 if the JSON payload string is malformed", async () => {
|
it("should return a 400 if the JSON payload string is malformed", async () => {
|
||||||
const result = await createAutomationBuilder(config)
|
const result = await createAutomationBuilder(config)
|
||||||
|
.onAppAction()
|
||||||
.zapier({
|
.zapier({
|
||||||
url: "http://www.example.com",
|
url: "http://www.example.com",
|
||||||
body: { value: "{ invalid json }" },
|
body: { value: "{ invalid json }" },
|
||||||
})
|
})
|
||||||
.run()
|
.test({ fields: {} })
|
||||||
|
|
||||||
expect(result.steps[0].outputs.success).toEqual(false)
|
expect(result.steps[0].outputs.success).toEqual(false)
|
||||||
expect(result.steps[0].outputs.response).toEqual("Invalid payload JSON")
|
expect(result.steps[0].outputs.response).toEqual("Invalid payload JSON")
|
||||||
|
|
Loading…
Reference in New Issue