import { formatDuration, parseDuration, } from '../../../src/lib/utils/datetime'; describe('DateTime Utils', () => { describe('formatDuration', () => { it('formats minutes to h:mm', () => { expect(formatDuration(60)).toBe('1:00'); expect(formatDuration(90)).toBe('1:30'); expect(formatDuration(125)).toBe('2:05'); expect(formatDuration(600)).toBe('10:00'); }); it('handles zero minutes', () => { expect(formatDuration(0)).toBe('0:00'); }); it('handles less than 60 minutes', () => { expect(formatDuration(45)).toBe('0:45'); expect(formatDuration(5)).toBe('0:05'); }); }); describe('parseDuration', () => { it('parses h:mm to minutes', () => { expect(parseDuration('1:00')).toBe(60); expect(parseDuration('1:30')).toBe(90); expect(parseDuration('2:05')).toBe(125); expect(parseDuration('10:00')).toBe(600); }); it('returns null for invalid format', () => { expect(parseDuration('1:5')).toBeNull(); // missing leading zero expect(parseDuration('abc')).toBeNull(); expect(parseDuration('1:60')).toBeNull(); // invalid minutes }); it('handles zero duration', () => { expect(parseDuration('0:00')).toBe(0); }); }); describe('roundtrip conversion', () => { it('format and parse roundtrip correctly', () => { const minutes = 125; const formatted = formatDuration(minutes); const parsed = parseDuration(formatted); expect(parsed).toBe(minutes); }); }); });