74 lines
2.2 KiB
TypeScript
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);
|
|
});
|
|
});
|