Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """Validate /api/search filter behavior (Phase 4 QA).""" | |
| import os | |
| import requests | |
| BASE_URL = os.getenv("BIOFLOW_API_URL", "http://localhost:8000") | |
| def _post(payload): | |
| r = requests.post(f"{BASE_URL}/api/search", json=payload, timeout=30) | |
| try: | |
| return r.status_code, r.json() | |
| except Exception: | |
| return r.status_code, {} | |
| def _skip_if_unavailable(status): | |
| if status in (404, 503): | |
| print("[SKIP] Backend unavailable or not restarted") | |
| return True | |
| return False | |
| def test_filters(): | |
| print("Phase 4: /api/search filter tests") | |
| status, data = _post({ | |
| "query": "EGFR", | |
| "top_k": 5, | |
| "filters": {"sources": ["pubmed", "uniprot"]}, | |
| }) | |
| if _skip_if_unavailable(status): | |
| return True | |
| assert status == 200, f"status={status}" | |
| assert "results" in data | |
| status, data = _post({ | |
| "query": "EGFR", | |
| "top_k": 5, | |
| "filters": {"modality": "molecule"}, | |
| }) | |
| assert status == 200 | |
| status, data = _post({ | |
| "query": "EGFR", | |
| "top_k": 5, | |
| "filters": {"year_min": 2018, "year_max": 2026}, | |
| }) | |
| assert status == 200 | |
| print("[OK] filter tests completed") | |
| return True | |
| if __name__ == "__main__": | |
| ok = test_filters() | |
| raise SystemExit(0 if ok else 1) | |