forked from tsai/budibase
3 changed files with 87 additions and 130 deletions
@ -1,57 +1,48 @@ |
|||||
import Workflow from "../Workflow"; |
import Workflow from "../Workflow" |
||||
import TEST_WORKFLOW from "./testWorkflow"; |
import TEST_WORKFLOW from "./testWorkflow" |
||||
|
|
||||
const TEST_BLOCK = { |
const TEST_BLOCK = { |
||||
id: "VFWeZcIPx", |
id: "AUXJQGZY7", |
||||
name: "Update UI State", |
name: "Delay", |
||||
tagline: "Update <b>{{path}}</b> to <b>{{value}}</b>", |
icon: "ri-time-fill", |
||||
icon: "ri-refresh-line", |
tagline: "Delay for <b>{{time}}</b> milliseconds", |
||||
description: "Update your User Interface with some data.", |
description: "Delay the workflow until an amount of time has passed.", |
||||
environment: "CLIENT", |
params: { time: "number" }, |
||||
params: { |
type: "LOGIC", |
||||
path: "string", |
args: { time: "5000" }, |
||||
value: "longText", |
stepId: "DELAY", |
||||
}, |
|
||||
args: { |
|
||||
path: "foo", |
|
||||
value: "started...", |
|
||||
}, |
|
||||
actionId: "SET_STATE", |
|
||||
type: "ACTION", |
|
||||
} |
} |
||||
|
|
||||
describe("Workflow Data Object", () => { |
describe("Workflow Data Object", () => { |
||||
let workflow |
let workflow |
||||
|
|
||||
beforeEach(() => { |
beforeEach(() => { |
||||
workflow = new Workflow({ ...TEST_WORKFLOW }); |
workflow = new Workflow({ ...TEST_WORKFLOW }) |
||||
}); |
}) |
||||
|
|
||||
it("adds a workflow block to the workflow", () => { |
it("adds a workflow block to the workflow", () => { |
||||
workflow.addBlock(TEST_BLOCK); |
workflow.addBlock(TEST_BLOCK) |
||||
expect(workflow.workflow.definition) |
expect(workflow.workflow.definition) |
||||
}) |
}) |
||||
|
|
||||
it("updates a workflow block with new attributes", () => { |
it("updates a workflow block with new attributes", () => { |
||||
const firstBlock = workflow.workflow.definition.steps[0]; |
const firstBlock = workflow.workflow.definition.steps[0] |
||||
const updatedBlock = { |
const updatedBlock = { |
||||
...firstBlock, |
...firstBlock, |
||||
name: "UPDATED" |
name: "UPDATED", |
||||
}; |
} |
||||
workflow.updateBlock(updatedBlock, firstBlock.id); |
workflow.updateBlock(updatedBlock, firstBlock.id) |
||||
expect(workflow.workflow.definition.steps[0]).toEqual(updatedBlock) |
expect(workflow.workflow.definition.steps[0]).toEqual(updatedBlock) |
||||
}) |
}) |
||||
|
|
||||
it("deletes a workflow block successfully", () => { |
it("deletes a workflow block successfully", () => { |
||||
const { steps } = workflow.workflow.definition |
const { steps } = workflow.workflow.definition |
||||
const originalLength = steps.length |
const originalLength = steps.length |
||||
|
|
||||
const lastBlock = steps[steps.length - 1]; |
|
||||
workflow.deleteBlock(lastBlock.id); |
|
||||
expect(workflow.workflow.definition.steps.length).toBeLessThan(originalLength); |
|
||||
}) |
|
||||
|
|
||||
it("builds a tree that gets rendered in the flowchart builder", () => { |
const lastBlock = steps[steps.length - 1] |
||||
expect(Workflow.buildUiTree(TEST_WORKFLOW.definition)).toMatchSnapshot(); |
workflow.deleteBlock(lastBlock.id) |
||||
|
expect(workflow.workflow.definition.steps.length).toBeLessThan( |
||||
|
originalLength |
||||
|
) |
||||
}) |
}) |
||||
}) |
}) |
||||
|
|||||
@ -1,49 +0,0 @@ |
|||||
// Jest Snapshot v1, https://goo.gl/fbAQLP |
|
||||
|
|
||||
exports[`Workflow Data Object builds a tree that gets rendered in the flowchart builder 1`] = ` |
|
||||
Array [ |
|
||||
Object { |
|
||||
"args": Object { |
|
||||
"time": 3000, |
|
||||
}, |
|
||||
"body": "Delay for <b>3000</b> milliseconds", |
|
||||
"heading": "DELAY", |
|
||||
"id": "zJQcZUgDS", |
|
||||
"name": "Delay", |
|
||||
"params": Object { |
|
||||
"time": "number", |
|
||||
}, |
|
||||
"type": "LOGIC", |
|
||||
}, |
|
||||
Object { |
|
||||
"args": Object { |
|
||||
"path": "foo", |
|
||||
"value": "finished", |
|
||||
}, |
|
||||
"body": "Update <b>foo</b> to <b>finished</b>", |
|
||||
"heading": "SET_STATE", |
|
||||
"id": "3RSTO7BMB", |
|
||||
"name": "Update UI State", |
|
||||
"params": Object { |
|
||||
"path": "string", |
|
||||
"value": "longText", |
|
||||
}, |
|
||||
"type": "ACTION", |
|
||||
}, |
|
||||
Object { |
|
||||
"args": Object { |
|
||||
"path": "foo", |
|
||||
"value": "started...", |
|
||||
}, |
|
||||
"body": "Update <b>foo</b> to <b>started...</b>", |
|
||||
"heading": "SET_STATE", |
|
||||
"id": "VFWeZcIPx", |
|
||||
"name": "Update UI State", |
|
||||
"params": Object { |
|
||||
"path": "string", |
|
||||
"value": "longText", |
|
||||
}, |
|
||||
"type": "ACTION", |
|
||||
}, |
|
||||
] |
|
||||
`; |
|
||||
@ -1,63 +1,78 @@ |
|||||
export default { |
export default { |
||||
_id: "53b6148c65d1429c987e046852d11611", |
name: "Test workflow", |
||||
_rev: "4-02c6659734934895812fa7be0215ee59", |
|
||||
name: "Test Workflow", |
|
||||
definition: { |
definition: { |
||||
steps: [ |
steps: [ |
||||
{ |
{ |
||||
id: "VFWeZcIPx", |
id: "ANBDINAPS", |
||||
name: "Update UI State", |
description: "Send an email.", |
||||
tagline: "Update <b>{{path}}</b> to <b>{{value}}</b>", |
tagline: "Send email to <b>{{to}}</b>", |
||||
icon: "ri-refresh-line", |
icon: "ri-mail-open-fill", |
||||
description: "Update your User Interface with some data.", |
name: "Send Email", |
||||
environment: "CLIENT", |
|
||||
params: { |
params: { |
||||
path: "string", |
to: "string", |
||||
value: "longText", |
from: "string", |
||||
|
subject: "longText", |
||||
|
text: "longText", |
||||
}, |
}, |
||||
args: { |
|
||||
path: "foo", |
|
||||
value: "started...", |
|
||||
}, |
|
||||
actionId: "SET_STATE", |
|
||||
type: "ACTION", |
type: "ACTION", |
||||
}, |
|
||||
{ |
|
||||
id: "zJQcZUgDS", |
|
||||
name: "Delay", |
|
||||
icon: "ri-time-fill", |
|
||||
tagline: "Delay for <b>{{time}}</b> milliseconds", |
|
||||
description: "Delay the workflow until an amount of time has passed.", |
|
||||
environment: "CLIENT", |
|
||||
params: { |
|
||||
time: "number", |
|
||||
}, |
|
||||
args: { |
args: { |
||||
time: 3000, |
text: "A user was created!", |
||||
|
subject: "New Budibase User", |
||||
|
from: "budimaster@budibase.com", |
||||
|
to: "test@test.com", |
||||
}, |
}, |
||||
actionId: "DELAY", |
stepId: "SEND_EMAIL", |
||||
type: "LOGIC", |
|
||||
}, |
}, |
||||
{ |
], |
||||
id: "3RSTO7BMB", |
trigger: { |
||||
name: "Update UI State", |
id: "iRzYMOqND", |
||||
tagline: "Update <b>{{path}}</b> to <b>{{value}}</b>", |
name: "Record Saved", |
||||
icon: "ri-refresh-line", |
event: "record:save", |
||||
description: "Update your User Interface with some data.", |
icon: "ri-save-line", |
||||
environment: "CLIENT", |
tagline: "Record is added to <b>{{model.name}}</b>", |
||||
params: { |
description: "Fired when a record is saved to your database.", |
||||
path: "string", |
params: { model: "model" }, |
||||
value: "longText", |
type: "TRIGGER", |
||||
}, |
args: { |
||||
args: { |
model: { |
||||
path: "foo", |
type: "model", |
||||
value: "finished", |
views: {}, |
||||
|
name: "users", |
||||
|
schema: { |
||||
|
name: { |
||||
|
type: "string", |
||||
|
constraints: { |
||||
|
type: "string", |
||||
|
length: { maximum: 123 }, |
||||
|
presence: { allowEmpty: false }, |
||||
|
}, |
||||
|
name: "name", |
||||
|
}, |
||||
|
age: { |
||||
|
type: "number", |
||||
|
constraints: { |
||||
|
type: "number", |
||||
|
presence: { allowEmpty: false }, |
||||
|
numericality: { |
||||
|
greaterThanOrEqualTo: "", |
||||
|
lessThanOrEqualTo: "", |
||||
|
}, |
||||
|
}, |
||||
|
name: "age", |
||||
|
}, |
||||
|
}, |
||||
|
_id: "c6b4e610cd984b588837bca27188a451", |
||||
|
_rev: "7-b8aa1ce0b53e88928bb88fc11bdc0aff", |
||||
}, |
}, |
||||
actionId: "SET_STATE", |
|
||||
type: "ACTION", |
|
||||
}, |
}, |
||||
], |
stepId: "RECORD_SAVED", |
||||
|
}, |
||||
}, |
}, |
||||
type: "workflow", |
type: "workflow", |
||||
live: true, |
ok: true, |
||||
|
id: "b384f861f4754e1693835324a7fcca62", |
||||
|
rev: "1-aa1c2cbd868ef02e26f8fad531dd7e37", |
||||
|
live: false, |
||||
|
_id: "b384f861f4754e1693835324a7fcca62", |
||||
|
_rev: "108-4116829ec375e0481d0ecab9e83a2caf", |
||||
} |
} |
||||
|
|||||
Loading…
Reference in new issue