const workflowRoutes = require("../../../src/routes/workflow"); describe("Workflow Route Permissions", () => { const { listAllowedActionsForTask } = workflowRoutes.__testables; it("allows leave approvers to act on leave tasks", () => { const actions = listAllowedActionsForTask( { employee: { permissionCodes: ["leave.approve"] } }, { status: "pending", workflow_instance: { entity_type: "leave" }, }, true, ); expect(actions).toEqual(["approve", "reject", "return"]); }); it("does not allow expense approvers to act on leave tasks without leave.approve", () => { const actions = listAllowedActionsForTask( { employee: { permissionCodes: ["expense.approve"] } }, { status: "pending", workflow_instance: { entity_type: "leave" }, }, true, ); expect(actions).toEqual([]); }); it("allows procurement approvers to act on purchase tasks", () => { const actions = listAllowedActionsForTask( { employee: { permissionCodes: ["procurement.approve"] } }, { status: "pending", workflow_instance: { entity_type: "purchase_request" }, }, true, ); expect(actions).toEqual(["approve", "reject", "return"]); }); it("allows travel approvers to act on travel tasks", () => { const actions = listAllowedActionsForTask( { employee: { permissionCodes: ["travel.approve"] } }, { status: "pending", workflow_instance: { entity_type: "travel_request" }, }, true, ); expect(actions).toEqual(["approve", "reject", "return"]); }); it("keeps transfer action limited to reimbursement tasks", () => { const reimbursementActions = listAllowedActionsForTask( { employee: { permissionCodes: ["expense.approve", "expense.transfer"] } }, { status: "pending", workflow_instance: { entity_type: "reimbursement" }, }, true, ); const leaveActions = listAllowedActionsForTask( { employee: { permissionCodes: ["leave.approve", "expense.transfer"] } }, { status: "pending", workflow_instance: { entity_type: "leave" }, }, true, ); expect(reimbursementActions).toContain("transfer"); expect(leaveActions).not.toContain("transfer"); }); });