import { describe, expect, it } from 'vitest' import { formatTickLabel, generateTicks, isoToMinutes, minutesToIso, minutesToPx, pxToMinutes, } from '@/lib/timetable/time-grid' describe('time-grid coordinate conversions', () => { const gridStart = '2026-07-10T14:00:00.000Z' it('isoToMinutes returns 0 at the anchor', () => { expect(isoToMinutes(gridStart, gridStart)).toBe(0) }) it('isoToMinutes computes minute offsets', () => { expect(isoToMinutes('2026-07-10T15:00:00.000Z', gridStart)).toBe(60) expect(isoToMinutes('2026-07-10T14:30:00.000Z', gridStart)).toBe(30) expect(isoToMinutes('2026-07-10T13:30:00.000Z', gridStart)).toBe(-30) }) it('roundtrip isoToMinutes ↔ minutesToIso preserves the value', () => { const back = minutesToIso(isoToMinutes('2026-07-10T18:45:00.000Z', gridStart), gridStart) expect(back).toBe('2026-07-10T18:45:00.000Z') }) it('minutesToPx and pxToMinutes are inverses', () => { expect(minutesToPx(30, 2)).toBe(60) expect(pxToMinutes(60, 2)).toBe(30) expect(pxToMinutes(60, 0)).toBe(0) }) it('formatTickLabel returns nl-NL HH:MM', () => { const label = formatTickLabel(0, gridStart) expect(label).toMatch(/^\d{2}:\d{2}$/) }) it('generateTicks produces inclusive endpoints', () => { const ticks = generateTicks(120, 30) expect(ticks).toEqual([0, 30, 60, 90, 120]) }) })