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) }) })