import * as Timeout from './Timeout.js' describe('duration', () => { test('uses a 15 second default', () => { expect(Timeout.duration).toBe(15_000) }) }) describe('signal', () => { test('preserves a caller signal and otherwise creates a deadline', () => { const caller = new AbortController().signal expect(Timeout.signal({ signal: caller })).toBe(caller) expect(Timeout.signal()).toBeInstanceOf(AbortSignal) }) }) describe('wait', () => { test('rejects with the abort reason and clears its timer', async () => { vi.useFakeTimers() try { const controller = new AbortController() const reason = new DOMException('deadline exceeded', 'TimeoutError') const waiting = Timeout.wait({ milliseconds: 1_000, signal: controller.signal }) const rejection = expect(waiting).rejects.toBe(reason) controller.abort(reason) await rejection expect(vi.getTimerCount()).toBe(0) } finally { vi.useRealTimers() } }) })