refactor(api): extract holiday calendar support
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import {
|
||||
buildHolidayCalendarCreateData,
|
||||
buildHolidayCalendarEntryCreateData,
|
||||
buildHolidayCalendarEntryUpdateData,
|
||||
buildHolidayCalendarUpdateData,
|
||||
holidayCalendarDetailInclude,
|
||||
holidayCalendarEntryOrderBy,
|
||||
holidayCalendarListInclude,
|
||||
} from "../router/holiday-calendar-support.js";
|
||||
|
||||
describe("holiday calendar support", () => {
|
||||
it("exposes shared include definitions", () => {
|
||||
expect(holidayCalendarEntryOrderBy).toEqual([
|
||||
{ date: "asc" },
|
||||
{ name: "asc" },
|
||||
]);
|
||||
|
||||
expect(holidayCalendarDetailInclude).toEqual({
|
||||
country: { select: { id: true, code: true, name: true } },
|
||||
metroCity: { select: { id: true, name: true } },
|
||||
entries: { orderBy: holidayCalendarEntryOrderBy },
|
||||
});
|
||||
|
||||
expect(holidayCalendarListInclude).toEqual({
|
||||
country: { select: { id: true, code: true, name: true } },
|
||||
metroCity: { select: { id: true, name: true } },
|
||||
entries: { orderBy: holidayCalendarEntryOrderBy },
|
||||
_count: { select: { entries: true } },
|
||||
});
|
||||
});
|
||||
|
||||
it("builds calendar create and sparse update payloads", () => {
|
||||
expect(buildHolidayCalendarCreateData({
|
||||
name: "Bayern Feiertage",
|
||||
scopeType: "STATE",
|
||||
countryId: "country_de",
|
||||
stateCode: "by",
|
||||
isActive: undefined,
|
||||
priority: undefined,
|
||||
normalizedScope: {
|
||||
stateCode: "BY",
|
||||
metroCityId: null,
|
||||
},
|
||||
})).toEqual({
|
||||
name: "Bayern Feiertage",
|
||||
scopeType: "STATE",
|
||||
countryId: "country_de",
|
||||
stateCode: "BY",
|
||||
isActive: true,
|
||||
priority: 0,
|
||||
});
|
||||
|
||||
expect(buildHolidayCalendarUpdateData({
|
||||
data: {
|
||||
name: "Augsburg lokal",
|
||||
metroCityId: null,
|
||||
priority: 7,
|
||||
},
|
||||
resolvedScope: {
|
||||
stateCode: null,
|
||||
metroCityId: null,
|
||||
},
|
||||
})).toEqual({
|
||||
name: "Augsburg lokal",
|
||||
metroCityId: null,
|
||||
priority: 7,
|
||||
});
|
||||
});
|
||||
|
||||
it("builds holiday entry create and sparse update payloads", () => {
|
||||
const normalizedDate = new Date("2026-01-06T00:00:00.000Z");
|
||||
|
||||
expect(buildHolidayCalendarEntryCreateData({
|
||||
data: {
|
||||
holidayCalendarId: "cal_by",
|
||||
date: new Date("2026-01-06T13:15:00.000Z"),
|
||||
name: "Heilige Drei Koenige",
|
||||
isRecurringAnnual: undefined,
|
||||
source: "state",
|
||||
},
|
||||
date: normalizedDate,
|
||||
})).toEqual({
|
||||
holidayCalendarId: "cal_by",
|
||||
date: normalizedDate,
|
||||
name: "Heilige Drei Koenige",
|
||||
isRecurringAnnual: false,
|
||||
source: "state",
|
||||
});
|
||||
|
||||
expect(buildHolidayCalendarEntryUpdateData({
|
||||
data: {
|
||||
date: normalizedDate,
|
||||
source: null,
|
||||
},
|
||||
date: normalizedDate,
|
||||
})).toEqual({
|
||||
date: normalizedDate,
|
||||
source: null,
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user