Spaces:
Sleeping
Sleeping
File size: 2,343 Bytes
1e732dd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | """
Tests for src/schemas/schemas.py — Pydantic request/response models.
"""
import pytest
from pydantic import ValidationError
from src.schemas.schemas import (
AskRequest,
AskResponse,
HealthResponse,
NaturalAnalysisRequest,
SearchRequest,
StructuredAnalysisRequest,
)
class TestNaturalAnalysisRequest:
def test_valid(self):
req = NaturalAnalysisRequest(message="My glucose is 185 and HbA1c 8.2")
assert req.message == "My glucose is 185 and HbA1c 8.2"
def test_too_short(self):
with pytest.raises(ValidationError):
NaturalAnalysisRequest(message="hi")
class TestStructuredAnalysisRequest:
def test_valid(self):
req = StructuredAnalysisRequest(biomarkers={"Glucose": 185.0})
assert req.biomarkers["Glucose"] == 185.0
def test_empty_biomarkers(self):
with pytest.raises(ValidationError):
StructuredAnalysisRequest(biomarkers={})
class TestAskRequest:
def test_valid(self):
req = AskRequest(question="What does high HbA1c mean?")
assert "HbA1c" in req.question
def test_too_short(self):
with pytest.raises(ValidationError):
AskRequest(question="ab")
def test_with_biomarkers(self):
req = AskRequest(
question="Explain my results",
biomarkers={"Glucose": 200.0},
patient_context="52-year-old male",
)
assert req.biomarkers is not None
class TestSearchRequest:
def test_defaults(self):
req = SearchRequest(query="diabetes guidelines")
assert req.top_k == 10
assert req.mode == "hybrid"
class TestAskResponse:
def test_round_trip(self):
resp = AskResponse(
request_id="req_abc",
question="test?",
answer="test answer",
documents_retrieved=5,
documents_relevant=3,
processing_time_ms=123.4,
)
data = resp.model_dump()
assert data["status"] == "success"
assert data["documents_relevant"] == 3
class TestHealthResponse:
def test_basic(self):
resp = HealthResponse(
status="healthy",
timestamp="2025-01-01T00:00:00Z",
version="2.0.0",
uptime_seconds=42.0,
)
assert resp.status == "healthy"
|