import { beforeEach, describe, expect, it, vi } from 'vitest' import { TranscriptsApi } from './TranscriptsApi' import type { ApiClient } from '../../core/ApiClient' import type { TranscriptResponse } from './types' // ── Mock client factory ────────────────────────────────────────────── function createMockClient(): ApiClient { return { setAccessToken: vi.fn().mockReturnThis(), request: vi.fn(), get: vi.fn(), post: vi.fn(), put: vi.fn(), patch: vi.fn(), delete: vi.fn(), } } // ── Tests ──────────────────────────────────────────────────────────── describe('TranscriptsApi', () => { let client: ReturnType let api: TranscriptsApi beforeEach(() => { client = createMockClient() api = new TranscriptsApi(client) }) // ── getById ────────────────────────────────────────────────────── describe('getById', () => { it('calls client.get with /transcripts/:id', async () => { const response: TranscriptResponse = { id: 'msg-1', isTranscribing: true, transcribeError: false, } vi.mocked(client.get).mockResolvedValue(response) const result = await api.getById('msg-1') expect(client.get).toHaveBeenCalledWith('/transcripts/msg-1', undefined) expect(result).toEqual(response) }) it('forwards custom headers', async () => { const response: TranscriptResponse = { id: 'msg-2', isTranscribing: false, transcribeError: true, } vi.mocked(client.get).mockResolvedValue(response) const headers = { 'X-Custom': 'h' } await api.getById('msg-2', headers) expect(client.get).toHaveBeenCalledWith('/transcripts/msg-2', headers) }) it('propagates errors from client.get', async () => { vi.mocked(client.get).mockRejectedValue(new Error('Not found')) await expect(api.getById('missing')).rejects.toThrow('Not found') }) }) })