test(server): add OCR endpoint and service tests

New tests:
- server/tests/test_ocr_endpoints.py: OCR API endpoint tests
- server/tests/test_ocr_service.py: OCR service unit tests

Updated tests:
- server/tests/test_openapi_schema.py: update OpenAPI schema tests
- server/tests/test_orchestrator_service.py: update orchestrator service tests
This commit is contained in:
caoxiaozhu
2026-05-12 03:05:05 +00:00
parent fb23a6976a
commit a3f3421ebc
4 changed files with 189 additions and 2 deletions

View File

@@ -3,13 +3,14 @@ from __future__ import annotations
from collections.abc import Generator
from fastapi.testclient import TestClient
from sqlalchemy import create_engine
from sqlalchemy import create_engine, select
from sqlalchemy.orm import Session, sessionmaker
from sqlalchemy.pool import StaticPool
from app.api.deps import get_db
from app.db.base import Base
from app.main import create_app
from app.models.financial_record import ExpenseClaim
from app.services.agent_assets import AgentAssetService
@@ -142,7 +143,7 @@ def test_orchestrator_approval_required_returns_confirmation_result() -> None:
def test_orchestrator_user_agent_draft_returns_structured_payload() -> None:
client, _ = build_client()
client, session_factory = build_client()
response = client.post(
"/api/v1/orchestrator/run",
@@ -159,8 +160,22 @@ def test_orchestrator_user_agent_draft_returns_structured_payload() -> None:
assert payload["selected_agent"] == "user_agent"
assert payload["status"] == "succeeded"
assert payload["result"]["draft_payload"]["confirmation_required"] is True
assert payload["result"]["draft_payload"]["claim_id"]
assert payload["result"]["draft_payload"]["claim_no"].startswith("EXP-")
assert payload["result"]["draft_payload"]["status"] == "draft"
assert payload["result"]["suggested_actions"]
with session_factory() as db:
claim = db.scalar(
select(ExpenseClaim).where(
ExpenseClaim.id == payload["result"]["draft_payload"]["claim_id"]
)
)
assert claim is not None
assert claim.claim_no == payload["result"]["draft_payload"]["claim_no"]
assert claim.status == "draft"
assert claim.items
def test_orchestrator_treats_expense_narrative_as_draft_instead_of_ar_query() -> None:
client, _ = build_client()