Pier-Jean's picture
Initial deploy: Docling Studio (local mode, port 7860)
5539271
import { describe, it, expect, vi, beforeEach } from 'vitest'
import { fetchDocuments, fetchDocument, uploadDocument, deleteDocument, getPreviewUrl } from './api'
vi.mock('../../shared/api/http', () => ({
apiFetch: vi.fn(),
}))
import { apiFetch } from '../../shared/api/http'
describe('document API', () => {
beforeEach(() => {
vi.clearAllMocks()
})
it('fetchDocuments calls GET /api/documents', async () => {
const docs = [{ id: '1', filename: 'a.pdf' }]
apiFetch.mockResolvedValue(docs)
const result = await fetchDocuments()
expect(apiFetch).toHaveBeenCalledWith('/api/documents')
expect(result).toEqual(docs)
})
it('fetchDocument calls GET /api/documents/:id', async () => {
const doc = { id: '42', filename: 'test.pdf' }
apiFetch.mockResolvedValue(doc)
const result = await fetchDocument('42')
expect(apiFetch).toHaveBeenCalledWith('/api/documents/42')
expect(result).toEqual(doc)
})
it('uploadDocument sends file via FormData with skipContentType', async () => {
const file = new File(['content'], 'test.pdf', { type: 'application/pdf' })
const response = { id: '1', filename: 'test.pdf' }
apiFetch.mockResolvedValue(response)
const result = await uploadDocument(file)
expect(apiFetch).toHaveBeenCalledWith('/api/documents/upload', {
method: 'POST',
body: expect.any(FormData),
skipContentType: true,
})
expect(result).toEqual(response)
})
it('deleteDocument calls DELETE /api/documents/:id', async () => {
apiFetch.mockResolvedValue(null)
await deleteDocument('42')
expect(apiFetch).toHaveBeenCalledWith('/api/documents/42', { method: 'DELETE' })
})
it('getPreviewUrl builds correct URL with defaults', () => {
expect(getPreviewUrl('abc')).toBe('/api/documents/abc/preview?page=1&dpi=150')
})
it('getPreviewUrl accepts custom page and dpi', () => {
expect(getPreviewUrl('abc', 3, 300)).toBe('/api/documents/abc/preview?page=3&dpi=300')
})
})