import { describe, expect, it } from 'vitest'; import { addSeconds, isIsoDateString, nowIso, toIsoString } from './time.js'; describe('time utils', () => { it('nowIso 返回 UTC ISO 字符串', () => { expect(isIsoDateString(nowIso())).toBe(true); }); it('toIsoString 支持 Date / 时间戳 / 字符串', () => { const date = new Date('2026-11-02T08:00:00.000Z'); expect(toIsoString(date)).toBe('2026-11-02T08:00:00.000Z'); expect(toIsoString(date.getTime())).toBe('2026-11-02T08:00:00.000Z'); expect(toIsoString('2026-11-02T08:00:00.000Z')).toBe('2026-11-02T08:00:00.000Z'); }); it('非法时间抛错', () => { expect(() => toIsoString('not-a-date')).toThrow(TypeError); }); it('addSeconds 不修改原对象', () => { const date = new Date('2026-11-02T08:00:00.000Z'); expect(addSeconds(date, 90).toISOString()).toBe('2026-11-02T08:01:30.000Z'); expect(date.toISOString()).toBe('2026-11-02T08:00:00.000Z'); }); it('isIsoDateString 拒绝非 UTC 格式', () => { expect(isIsoDateString('2026-11-02T08:00:00+08:00')).toBe(false); expect(isIsoDateString('2026-13-02T08:00:00.000Z')).toBe(false); }); });