From 5c0c8b2ec448a06b7742a08c3b78c0032a7eab06 Mon Sep 17 00:00:00 2001 From: Marcus Schiesser <mail@marcusschiesser.de> Date: Mon, 30 Sep 2024 12:10:21 +0700 Subject: [PATCH] test: add concurrent test for workflows (#1269) --- packages/core/tests/workflow.test.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/packages/core/tests/workflow.test.ts b/packages/core/tests/workflow.test.ts index 1b881c1c7..c28770e12 100644 --- a/packages/core/tests/workflow.test.ts +++ b/packages/core/tests/workflow.test.ts @@ -166,4 +166,31 @@ describe("Workflow", () => { greeting: "Hello Alice, you are 30 years old!", }); }); + + test("workflow with two concurrent steps", async () => { + const concurrentFlow = new Workflow({ verbose: true }); + + const step1 = vi.fn(async (_context, _ev: StartEvent) => { + await new Promise((resolve) => setTimeout(resolve, 200)); + return new StopEvent({ result: "Step 1 completed" }); + }); + + const step2 = vi.fn(async (_context, _ev: StartEvent) => { + await new Promise((resolve) => setTimeout(resolve, 100)); + return new StopEvent({ result: "Step 2 completed" }); + }); + + concurrentFlow.addStep(StartEvent, step1); + concurrentFlow.addStep(StartEvent, step2); + + const startTime = new Date(); + const result = await concurrentFlow.run("start"); + const endTime = new Date(); + const duration = endTime.getTime() - startTime.getTime(); + + expect(step1).toHaveBeenCalledTimes(1); + expect(step2).toHaveBeenCalledTimes(1); + expect(duration).toBeLessThan(200); + expect(result.data.result).toBe("Step 2 completed"); + }); }); -- GitLab