"""Tests for OCR endpoints.""" import sys, os sys.path.insert(0, os.path.dirname(__file__)) import pytest import pytest_asyncio from httpx import AsyncClient from helpers import auth_header, register_and_login @pytest.mark.asyncio async def test_submit_ocr_job(client: AsyncClient): token, _ = await register_and_login(client) resp = await client.post( "/api/ocr/process", json={"note_id": "note-ocr-1", "document_id": None, "page_number": None}, headers=auth_header(token), ) assert resp.status_code == 201 data = resp.json() assert "job_id" in data @pytest.mark.asyncio async def test_get_job_status(client: AsyncClient): token, _ = await register_and_login(client) resp = await client.post( "/api/ocr/process", json={"note_id": "note-ocr-2", "document_id": None, "page_number": None}, headers=auth_header(token), ) job_id = resp.json()["job_id"] resp = await client.get(f"/api/ocr/status/{job_id}", headers=auth_header(token)) assert resp.status_code == 200 data = resp.json() assert data["id"] == job_id assert data["status"] == "pending" @pytest.mark.asyncio async def test_get_job_status_not_found(client: AsyncClient): token, _ = await register_and_login(client) resp = await client.get("/api/ocr/status/nonexistent", headers=auth_header(token)) assert resp.status_code == 404 @pytest.mark.asyncio async def test_get_ocr_results_empty(client: AsyncClient): token, _ = await register_and_login(client) resp = await client.get("/api/ocr/results/note-no-jobs", headers=auth_header(token)) assert resp.status_code == 200 assert resp.json() == [] @pytest.mark.asyncio async def test_get_ocr_results_with_jobs(client: AsyncClient): token, _ = await register_and_login(client) await client.post( "/api/ocr/process", json={"note_id": "note-ocr-3", "document_id": None, "page_number": None}, headers=auth_header(token), ) await client.post( "/api/ocr/process", json={"note_id": "note-ocr-3", "document_id": None, "page_number": None}, headers=auth_header(token), ) resp = await client.get("/api/ocr/results/note-ocr-3", headers=auth_header(token)) assert resp.status_code == 200 assert len(resp.json()) == 2 @pytest.mark.asyncio async def test_ocr_requires_auth(client: AsyncClient): resp = await client.post( "/api/ocr/process", json={"note_id": "x", "document_id": None, "page_number": None}, ) assert resp.status_code in (401, 403)