R62 A1-A6:2026年中国法定假期日历
这个提交包含在:
@@ -1,6 +1,7 @@
|
||||
const {
|
||||
calculateRequestedDays,
|
||||
calculateRequestedDaysByWorkingCalendar,
|
||||
calculateRequestedDaysPreviewByWorkingCalendar,
|
||||
leaveRangesOverlap,
|
||||
summarizeLeaveLedgerEntries,
|
||||
} = require("../../../src/services/leave");
|
||||
@@ -98,6 +99,54 @@ describe("Leave Service", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("calculateRequestedDaysPreviewByWorkingCalendar", () => {
|
||||
it("returns official holiday counts while excluding holidays from requested days", () => {
|
||||
expect(
|
||||
calculateRequestedDaysPreviewByWorkingCalendar({
|
||||
startDate: "2026-01-01",
|
||||
endDate: "2026-01-04",
|
||||
startSession: "am",
|
||||
endSession: "pm",
|
||||
calendarDays: [
|
||||
{ date: "2026-01-01", day_type: "holiday" },
|
||||
{ date: "2026-01-02", day_type: "holiday" },
|
||||
{ date: "2026-01-03", day_type: "holiday" },
|
||||
{ date: "2026-01-04", day_type: "adjusted_workday" },
|
||||
],
|
||||
}),
|
||||
).toEqual({
|
||||
requestedDays: 1,
|
||||
naturalRequestedDays: 4,
|
||||
holidayDayCount: 3,
|
||||
weekendDayCount: 0,
|
||||
adjustedWorkdayCount: 1,
|
||||
calendarApplied: true,
|
||||
});
|
||||
});
|
||||
|
||||
it("keeps half-day precision for adjusted workdays in preview payload", () => {
|
||||
expect(
|
||||
calculateRequestedDaysPreviewByWorkingCalendar({
|
||||
startDate: "2026-01-03",
|
||||
endDate: "2026-01-04",
|
||||
startSession: "pm",
|
||||
endSession: "am",
|
||||
calendarDays: [
|
||||
{ date: "2026-01-03", day_type: "holiday" },
|
||||
{ date: "2026-01-04", day_type: "adjusted_workday" },
|
||||
],
|
||||
}),
|
||||
).toEqual({
|
||||
requestedDays: 0.5,
|
||||
naturalRequestedDays: 1,
|
||||
holidayDayCount: 0.5,
|
||||
weekendDayCount: 0,
|
||||
adjustedWorkdayCount: 0.5,
|
||||
calendarApplied: true,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("leaveRangesOverlap", () => {
|
||||
it("detects overlapping half-day ranges", () => {
|
||||
expect(
|
||||
|
||||
在新工单中引用
屏蔽一个用户