41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
|
|
from backend.database import db
|
|
from backend.main import app
|
|
from fastapi.testclient import TestClient
|
|
|
|
client = TestClient(app)
|
|
|
|
|
|
def setup_function() -> None:
|
|
db._cases.clear() # type: ignore[attr-defined]
|
|
|
|
|
|
def test_admin_dashboard_reflects_outcomes_and_distance_median() -> None:
|
|
db.create_case(age=12, gender='female', status='new')
|
|
db.create_case(age=17, gender='male', status='analyzed', found_alive=True, found_distance_km=2.0)
|
|
db.create_case(age=19, gender='female', status='closed', found_alive=False, found_distance_km=6.0)
|
|
|
|
response = client.get('/api/v1/admin/dashboard')
|
|
|
|
assert response.status_code == 200
|
|
payload = response.json()
|
|
assert payload['total_cases'] == 3
|
|
assert payload['found_alive_count'] == 1
|
|
assert payload['found_deceased_count'] == 1
|
|
assert payload['unknown_outcome_count'] == 1
|
|
assert payload['median_found_distance_km'] == 4.0
|
|
assert payload['recent_activity_count'] == 3
|
|
|
|
|
|
def test_admin_dashboard_is_zero_safe_when_no_cases_exist() -> None:
|
|
response = client.get('/api/v1/admin/dashboard')
|
|
|
|
assert response.status_code == 200
|
|
payload = response.json()
|
|
assert payload['total_cases'] == 0
|
|
assert payload['found_alive_count'] == 0
|
|
assert payload['found_deceased_count'] == 0
|
|
assert payload['unknown_outcome_count'] == 0
|
|
assert payload['median_found_distance_km'] is None
|
|
assert payload['recent_activity_count'] == 0
|