profileShare

rasmusjy / voicetask

Read-only snapshot

No repository description.

main default branch 105 files Expires Sep 13, 2026, 9:06 AM
api.test.ts 1,019 bytes
1 import { afterEach, describe, expect, it, vi } from 'vitest'
2 import { hasSpecPack } from './api'
3
4 describe('hasSpecPack', () => {
5 afterEach(() => {
6 vi.unstubAllGlobals()
7 })
8
9 it('uses HEAD and returns true for an existing pack', async () => {
10 const fetchMock = vi.fn().mockResolvedValue(new Response(null, { status: 200 }))
11 vi.stubGlobal('fetch', fetchMock)
12
13 await expect(hasSpecPack('session-1')).resolves.toBe(true)
14 expect(fetchMock).toHaveBeenCalledWith('/api/sessions/session-1/export/spec-pack.zip', {
15 method: 'HEAD',
16 })
17 })
18
19 it('returns false when no pack exists', async () => {
20 vi.stubGlobal('fetch', vi.fn().mockResolvedValue(new Response(null, { status: 404 })))
21
22 await expect(hasSpecPack('session-1')).resolves.toBe(false)
23 })
24
25 it('surfaces unexpected readiness failures', async () => {
26 vi.stubGlobal('fetch', vi.fn().mockResolvedValue(new Response(null, { status: 503 })))
27
28 await expect(hasSpecPack('session-1')).rejects.toThrow('status 503')
29 })
30 })
31