diff --git a/src/core/client.test.ts b/src/core/client.test.ts new file mode 100644 index 0000000..90bfcd8 --- /dev/null +++ b/src/core/client.test.ts @@ -0,0 +1,22 @@ +import { afterEach, describe, expect, it, vi } from 'vitest' +import { PixelmuseClient } from './client.js' + +describe('PixelmuseClient', () => { + afterEach(() => { + vi.restoreAllMocks() + }) + + it('handles successful DELETE responses with empty bodies', async () => { + const fetchMock = vi.spyOn(globalThis, 'fetch').mockResolvedValue( + new Response(null, { status: 204 }), + ) + const client = new PixelmuseClient('pm_test_' + 'a'.repeat(32)) + + await expect(client.deleteGeneration('gen_123')).resolves.toBeUndefined() + + expect(fetchMock).toHaveBeenCalledWith( + 'https://www.pixelmuse.studio/api/v1/images/gen_123', + expect.objectContaining({ method: 'DELETE' }), + ) + }) +}) diff --git a/src/core/client.ts b/src/core/client.ts index f53afb6..e45ad32 100644 --- a/src/core/client.ts +++ b/src/core/client.ts @@ -79,7 +79,11 @@ export class PixelmuseClient { ) } - return (await res.json()) as T + const bodyText = await res.text() + if (bodyText.trim().length === 0) { + return undefined as T + } + return JSON.parse(bodyText) as T } /** Generate an image. Uses Prefer: wait=55 for sync response. */