import { describe, expect, it } from "vitest"; import { buildCalculationRuleCreateData, buildCalculationRuleUpdateData, } from "../router/calculation-rule-support.js"; describe("calculation-rule-support", () => { it("buildCalculationRuleCreateData omits undefined optional fields", () => { const result = buildCalculationRuleCreateData({ name: "Sick Days", triggerType: "SICK", costEffect: "ZERO", chargeabilityEffect: "SKIP", priority: 0, isActive: true, }); expect(result).toEqual({ name: "Sick Days", triggerType: "SICK", costEffect: "ZERO", chargeabilityEffect: "SKIP", priority: 0, isActive: true, }); expect(result).not.toHaveProperty("description"); expect(result).not.toHaveProperty("projectId"); expect(result).not.toHaveProperty("orderType"); expect(result).not.toHaveProperty("costReductionPercent"); }); it("buildCalculationRuleCreateData keeps provided optional fields", () => { const result = buildCalculationRuleCreateData({ name: "Vacation Discount", description: "Reduce cost for vacation", triggerType: "VACATION", projectId: "project_1", orderType: "CHARGEABLE", costEffect: "REDUCE", costReductionPercent: 25, chargeabilityEffect: "COUNT", priority: 10, isActive: false, }); expect(result).toEqual({ name: "Vacation Discount", description: "Reduce cost for vacation", triggerType: "VACATION", projectId: "project_1", orderType: "CHARGEABLE", costEffect: "REDUCE", costReductionPercent: 25, chargeabilityEffect: "COUNT", priority: 10, isActive: false, }); }); it("buildCalculationRuleUpdateData only includes provided fields and preserves falsy values", () => { const result = buildCalculationRuleUpdateData({ description: "", costReductionPercent: 0, priority: 0, isActive: false, }); expect(result).toEqual({ description: "", costReductionPercent: 0, priority: 0, isActive: false, }); expect(result).not.toHaveProperty("name"); expect(result).not.toHaveProperty("projectId"); }); });