diff --git a/.changeset/strong-ravens-joke.md b/.changeset/strong-ravens-joke.md new file mode 100644 index 0000000000..24f11cd84f --- /dev/null +++ b/.changeset/strong-ravens-joke.md @@ -0,0 +1,5 @@ +--- +"@medusajs/orchestration": patch +--- + +Replace workflow definition if not v2 diff --git a/packages/orchestration/src/__tests__/workflow/local-workflow.ts b/packages/orchestration/src/__tests__/workflow/local-workflow.ts index e3d07ed05a..7a0810e883 100644 --- a/packages/orchestration/src/__tests__/workflow/local-workflow.ts +++ b/packages/orchestration/src/__tests__/workflow/local-workflow.ts @@ -80,7 +80,7 @@ describe("WorkflowManager", () => { expect(wf).toEqual(["create-product", "broken-delivery", "deliver-product"]) }) - it("should throw when registering a workflow with an existing id", () => { + it("should NOT throw when registering a workflow with an existing id in Medusa V1", () => { let err try { WorkflowManager.register( @@ -100,6 +100,32 @@ describe("WorkflowManager", () => { err = e } + expect(err).toBeUndefined() + }) + + it("should throw when registering a workflow with an existing id in Medusa V2", () => { + let err + const env = process.env.MEDUSA_FF_MEDUSA_V2 + process.env.MEDUSA_FF_MEDUSA_V2 = "true" + try { + WorkflowManager.register( + "create-product", + { + action: "foo", + next: { + action: "bar", + next: { + action: "xor", + }, + }, + }, + handlers + ) + } catch (e) { + err = e + } + process.env.MEDUSA_FF_MEDUSA_V2 = env + expect(err).toBeDefined() expect(err.message).toBe( `Workflow with id "create-product" and step definition already exists.` @@ -108,6 +134,9 @@ describe("WorkflowManager", () => { it("should not throw when registering a workflow with an existing id but identical definition", () => { let err + + const env = process.env.MEDUSA_FF_MEDUSA_V2 + process.env.MEDUSA_FF_MEDUSA_V2 = "true" try { WorkflowManager.register( "create-product", @@ -122,6 +151,7 @@ describe("WorkflowManager", () => { } catch (e) { err = e } + process.env.MEDUSA_FF_MEDUSA_V2 = env expect(err).not.toBeDefined() }) diff --git a/packages/orchestration/src/workflow/workflow-manager.ts b/packages/orchestration/src/workflow/workflow-manager.ts index a2ec8fd69a..5b5e103022 100644 --- a/packages/orchestration/src/workflow/workflow-manager.ts +++ b/packages/orchestration/src/workflow/workflow-manager.ts @@ -101,9 +101,11 @@ export class WorkflowManager { : true if (!areStepsEqual) { - throw new Error( - `Workflow with id "${workflowId}" and step definition already exists.` - ) + if (process.env.MEDUSA_FF_MEDUSA_V2 == "true") { + throw new Error( + `Workflow with id "${workflowId}" and step definition already exists.` + ) + } } }