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