Spaces:
Sleeping
Sleeping
| from fastapi.testclient import TestClient | |
| from api.main import app | |
| client = TestClient(app) | |
| def test_health_endpoint_returns_ok(): | |
| response = client.get("/health") | |
| assert response.status_code == 200 | |
| payload = response.json() | |
| assert payload["status"] == "ok" | |
| assert payload["environment"] == "school-intervention-env" | |
| def test_reset_endpoint_returns_observation_shape(): | |
| response = client.post("/reset") | |
| assert response.status_code == 200 | |
| payload = response.json() | |
| observation = payload["observation"] | |
| for key in ["student_id", "attendance", "performance", "stress_level", "risk_score", "week"]: | |
| assert key in observation | |
| assert 0.0 <= observation["attendance"] <= 1.0 | |
| assert 0.0 <= observation["performance"] <= 1.0 | |
| assert 0.0 <= observation["stress_level"] <= 1.0 | |
| assert 0.0 <= observation["risk_score"] <= 1.0 | |
| def test_step_endpoint_rejects_invalid_action(): | |
| response = client.post("/step", json={"action": "bad_action"}) | |
| # Invalid enum value is rejected by request validation. | |
| assert response.status_code == 422 | |
| def test_grade_unknown_task_returns_400(): | |
| response = client.post("/grade/unknown") | |
| assert response.status_code == 400 | |
| assert "Unknown task" in response.json()["detail"] | |
| def test_info_endpoint_contract(): | |
| response = client.get("/info") | |
| assert response.status_code == 200 | |
| payload = response.json() | |
| assert payload["name"] == "school-intervention-env" | |
| assert payload["max_steps"] == 20 | |
| assert payload["tasks"] == ["easy", "medium", "hard"] |