import { describe, expect, it } from 'vitest' import { useCalendarGrid } from '../../composables/useCalendarGrid' describe('useCalendarGrid', () => { it('builds a stable 42-day month grid with previous and next month padding', () => { const calendar = useCalendarGrid() calendar.setCurrentMonthFromDate(new Date('2026-05-07T12:00:00')) expect(calendar.weekDays).toEqual(['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']) expect(calendar.monthYear.value).toBe('May 2026') expect(calendar.calendarDays.value).toHaveLength(42) expect(calendar.calendarDays.value[0].date.getMonth()).toBe(3) expect(calendar.calendarDays.value.some(day => day.isCurrentMonth && day.date.getDate() === 7)).toBe(true) }) it('applies min and max date bounds at day precision', () => { const calendar = useCalendarGrid({ min: () => '2026-05-05T14:00:00', max: () => '2026-05-10T09:00:00', }) expect(calendar.isDateDisabled(new Date('2026-05-04T23:59:00'))).toBe(true) expect(calendar.isDateDisabled(new Date('2026-05-05T00:00:00'))).toBe(false) expect(calendar.isDateDisabled(new Date('2026-05-10T23:59:00'))).toBe(false) expect(calendar.isDateDisabled(new Date('2026-05-11T00:00:00'))).toBe(true) }) it('formats dates and advances months', () => { const calendar = useCalendarGrid() calendar.setCurrentMonthFromDate(new Date('2026-01-15T00:00:00')) expect(calendar.formatDateValue(new Date('2026-01-05T13:00:00'))).toBe('2026-01-05') calendar.nextMonth() expect(calendar.monthYear.value).toBe('February 2026') calendar.prevMonth() expect(calendar.monthYear.value).toBe('January 2026') }) })