import { beforeEach, describe, expect, it, vi } from 'vitest'; import { AttachmentChunkAckService } from './attachment-chunk-ack.service'; describe('AttachmentChunkAckService', () => { let service: AttachmentChunkAckService; beforeEach(() => { service = new AttachmentChunkAckService(); }); it('resolves a waiter when the matching chunk ack arrives', async () => { const waitPromise = service.waitForAck('msg-1', 'file-1', 0, 1_000); service.resolveAck('msg-1', 'file-1', 0); await expect(waitPromise).resolves.toBeUndefined(); }); it('times out when no ack arrives', async () => { vi.useFakeTimers(); const waitPromise = service.waitForAck('msg-1', 'file-1', 1, 50); vi.advanceTimersByTime(51); await expect(waitPromise).rejects.toThrow('attachment chunk ack timeout'); vi.useRealTimers(); }); });