const workflowUtils = require("../../../src/utils/workflow"); describe("Workflow Utils", () => { describe("parseWorkflowSteps", () => { it("throws error for invalid steps array", () => { expect(() => workflowUtils.parseWorkflowSteps({})).toThrow(/参数校验失败/); expect(() => workflowUtils.parseWorkflowSteps({ steps: [] })).toThrow(/参数校验失败/); }); it("parses valid steps array", () => { expect(workflowUtils.parseWorkflowSteps({ steps: [{ id: 1 }] })).toEqual([{ id: 1 }]); }); }); describe("buildWorkflowStepsFromApprovalRule", () => { it("builds steps correctly for valid rule", () => { const result = workflowUtils.buildWorkflowStepsFromApprovalRule({ level1_role: "manager", level2_role: "finance", }); expect(result.length).toBe(2); expect(result[0].assignee_rule.type).toBe("department_manager"); expect(result[1].assignee_rule.type).toBe("role"); expect(result[1].assignee_rule.value).toBe("finance"); }); it("throws if rule is empty or missing roles", () => { expect(() => workflowUtils.buildWorkflowStepsFromApprovalRule({})).toThrow(/参数校验失败/); }); }); describe("resolveAssigneeFromRule", () => { it("resolves role type", async () => { const res = await workflowUtils.resolveAssigneeFromRule({ type: "role", value: "hr" }); expect(res.assigneeRole).toBe("hr"); expect(res.assigneeId).toBe(null); }); it("throws for invalid rule", async () => { await expect(workflowUtils.resolveAssigneeFromRule(null)).rejects.toThrow(/参数校验失败/); await expect(workflowUtils.resolveAssigneeFromRule({ type: "unknown" })).rejects.toThrow(/参数校验失败/); }); }); describe("toMoneyString", () => { it("converts values to string correctly", () => { expect(workflowUtils.toMoneyString(null)).toBe(null); expect(workflowUtils.toMoneyString("10.0")).toBe("10.0"); expect(workflowUtils.toMoneyString(10)).toBe("10"); }); }); });