Spaces:
Running
Running
| import pytest | |
| from fastapi.testclient import TestClient | |
| from src.api.main import app | |
| client = TestClient(app) | |
| def test_health_endpoint(): | |
| """Test that the /health endpoint correctly reports system status.""" | |
| response = client.get("/health") | |
| assert response.status_code == 200 | |
| data = response.json() | |
| assert data["status"] == "ok" | |
| assert "ollama_available" in data | |
| def test_evaluate_endpoint(): | |
| """Test the /evaluate endpoint with mock claims.""" | |
| payload = { | |
| "question": "Is Metformin safe?", | |
| "answer": "Metformin is a safe and effective drug. It is recommended.", | |
| "context_chunks": [ | |
| { | |
| "chunk_id": "mock-1", | |
| "text": "Metformin is a first-line medication for the treatment of type 2 diabetes. It is safe.", | |
| "source": "mock_db", | |
| "pub_type": "research_abstract", | |
| "pub_year": 2024, | |
| "title": "Study on Metformin safety" | |
| } | |
| ], | |
| "run_ragas": False | |
| } | |
| # Since the evaluation modules load heavy ML models, | |
| # the first test call might take 10-15s to run. | |
| response = client.post("/evaluate", json=payload) | |
| assert response.status_code == 200 | |
| data = response.json() | |
| assert "composite_score" in data | |
| assert "hrs" in data | |
| assert data["risk_band"] in ["LOW", "MODERATE", "HIGH", "CRITICAL"] | |
| assert "faithfulness" in data["module_results"] | |
| def test_query_invalid_params(): | |
| """Test the /query validation rules.""" | |
| payload = { | |
| "question": "Hi", # 2 chars — below min_length=5, triggers 422 | |
| "top_k": 5 | |
| } | |
| response = client.post("/query", json=payload) | |
| assert response.status_code == 422 # Unprocessable Entity (Pydantic validation error) | |