Files
workavia-calendar-front/__test__/utils/CalendarRangeManager.test.ts
T
2026-01-20 17:33:30 +01:00

74 lines
2.2 KiB
TypeScript

import {
calendarRangeManager,
getDisplayedCalendarRange,
getDisplayedDate,
setDisplayedDateAndRange,
} from "@/utils/CalendarRangeManager";
describe("CalendarRangeManager", () => {
beforeEach(() => {
setDisplayedDateAndRange(new Date());
});
it("should return a singleton instance", () => {
const instance1 = calendarRangeManager;
const instance2 = calendarRangeManager;
expect(instance1).toStrictEqual(instance2);
});
it("should compute and return calendar range when date is set", () => {
const testDate = new Date("2025-06-15T10:00:00Z");
setDisplayedDateAndRange(testDate);
const range = getDisplayedCalendarRange();
expect(range.start).toBeInstanceOf(Date);
expect(range.end).toBeInstanceOf(Date);
expect(range.start.getTime()).toBeLessThanOrEqual(testDate.getTime());
expect(range.end.getTime()).toBeGreaterThanOrEqual(testDate.getTime());
});
it("should get the default date", () => {
const date = getDisplayedDate();
expect(date).toBeInstanceOf(Date);
});
it("should set and get a date", () => {
const testDate = new Date("2025-01-15T10:00:00Z");
setDisplayedDateAndRange(testDate);
const retrievedDate = getDisplayedDate();
expect(retrievedDate).toStrictEqual(testDate);
});
it("should persist date across multiple calls", () => {
const testDate = new Date("2025-06-20T15:30:00Z");
setDisplayedDateAndRange(testDate);
const date1 = getDisplayedDate();
const date2 = getDisplayedDate();
expect(date1).toStrictEqual(date2);
expect(date1).toStrictEqual(testDate);
});
it("should update date when set multiple times", () => {
const date1 = new Date("2025-01-01T00:00:00Z");
const date2 = new Date("2025-12-31T23:59:59Z");
setDisplayedDateAndRange(date1);
expect(getDisplayedDate()).toStrictEqual(date1);
setDisplayedDateAndRange(date2);
expect(getDisplayedDate()).toStrictEqual(date2);
});
it("should maintain shared state (singleton behavior)", () => {
const testDate = new Date("2025-03-01");
setDisplayedDateAndRange(testDate);
// Verify CalendarRangeManager reflects the same state
expect(calendarRangeManager.getDate()).toStrictEqual(testDate);
});
});