Spaces:
Running
Running
| import os | |
| import sys | |
| from fastapi.testclient import TestClient | |
| PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
| if PROJECT_ROOT not in sys.path: | |
| sys.path.insert(0, PROJECT_ROOT) | |
| import main # noqa: E402 | |
| def _make_test_client(): | |
| # use test db | |
| main.db_path = os.path.join(PROJECT_ROOT, "test_focus_guard.db") | |
| if os.path.exists(main.db_path): | |
| os.remove(main.db_path) | |
| return TestClient(main.app) | |
| def test_get_settings_default_fields(): | |
| client = _make_test_client() | |
| with client: | |
| resp = client.get("/api/settings") | |
| assert resp.status_code == 200 | |
| data = resp.json() | |
| assert "sensitivity" in data | |
| assert "notification_enabled" in data | |
| assert "notification_threshold" in data | |
| assert "frame_rate" in data | |
| assert "model_name" in data | |
| def test_update_settings_clamped_ranges(): | |
| client = _make_test_client() | |
| with client: | |
| # get setting | |
| r0 = client.get("/api/settings") | |
| assert r0.status_code == 200 | |
| # set unlogic params | |
| payload = { | |
| "sensitivity": 100, | |
| "notification_enabled": False, | |
| "notification_threshold": 1, | |
| "frame_rate": 1000, | |
| } | |
| r_put = client.put("/api/settings", json=payload) | |
| assert r_put.status_code == 200 | |
| body = r_put.json() | |
| assert body["status"] == "success" | |
| assert body["updated"] is True | |
| r1 = client.get("/api/settings") | |
| data = r1.json() | |
| assert 1 <= data["sensitivity"] <= 10 | |
| assert bool(data["notification_enabled"]) is False | |
| assert 5 <= data["notification_threshold"] <= 300 | |
| assert 5 <= data["frame_rate"] <= 60 | |