Agentic-RagBot / tests /test_schemas.py
Nikhil Pravin Pise
Fix codebase issues: linting, types, tests, and security.
696f787
"""
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"