refactor(api): extract calculation rule support
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
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");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user