diff --git a/src/sdk/builders/tasks/__tests__/factory.test.ts b/src/sdk/builders/tasks/__tests__/factory.test.ts index fffbb6b4..1e652106 100644 --- a/src/sdk/builders/tasks/__tests__/factory.test.ts +++ b/src/sdk/builders/tasks/__tests__/factory.test.ts @@ -325,6 +325,21 @@ describe("switchTask", () => { type: "SWITCH", }); }); + + it("Should use the expression directly with the javascript evaluator", () => { + const expr = "$.amount > 100 ? 'high' : 'low'"; + const switchTaskObj = switchTask("sw", expr, {}, [], undefined, "javascript"); + expect(switchTaskObj).toEqual({ + name: "sw", + taskReferenceName: "sw", + decisionCases: {}, + evaluatorType: "javascript", + inputParameters: {}, + expression: expr, + defaultCase: [], + type: "SWITCH", + }); + }); }); describe("terminateTask", () => { diff --git a/src/sdk/builders/tasks/switch.ts b/src/sdk/builders/tasks/switch.ts index 3c904638..21980958 100644 --- a/src/sdk/builders/tasks/switch.ts +++ b/src/sdk/builders/tasks/switch.ts @@ -5,16 +5,16 @@ export const switchTask = ( expression: string, decisionCases: Record = {}, defaultCase: TaskDefTypes[] = [], - optional?: boolean + optional?: boolean, + evaluatorType: SwitchTaskDef["evaluatorType"] = "value-param" ): SwitchTaskDef => ({ name: taskReferenceName, taskReferenceName, decisionCases, - evaluatorType: "value-param", - inputParameters: { - switchCaseValue: expression, - }, - expression: "switchCaseValue", + evaluatorType, + inputParameters: + evaluatorType === "value-param" ? { switchCaseValue: expression } : {}, + expression: evaluatorType === "value-param" ? "switchCaseValue" : expression, defaultCase, type: TaskType.SWITCH, optional,