Spaces:
Sleeping
Sleeping
| import os | |
| import pytest | |
| from httpx import AsyncClient, ASGITransport | |
| from mediastorm.api import app | |
| async def test_search_requires_query(): | |
| transport = ASGITransport(app=app) | |
| async with AsyncClient(transport=transport, base_url="http://test") as client: | |
| resp = await client.post("/api/search", json={}) | |
| assert resp.status_code == 422 | |
| async def test_search_returns_stories(): | |
| """Integration test — requires GEMINI_API_KEY and populated ChromaDB.""" | |
| if not os.environ.get("GEMINI_API_KEY"): | |
| pytest.skip("GEMINI_API_KEY not set") | |
| transport = ASGITransport(app=app) | |
| async with AsyncClient(transport=transport, base_url="http://test") as client: | |
| resp = await client.post("/api/search", json={"query": "Emmy winning documentaries"}) | |
| assert resp.status_code == 200 | |
| data = resp.json() | |
| assert "stories" in data | |
| assert isinstance(data["stories"], list) | |
| async def test_health(): | |
| transport = ASGITransport(app=app) | |
| async with AsyncClient(transport=transport, base_url="http://test") as client: | |
| resp = await client.get("/api/health") | |
| assert resp.status_code == 200 | |
| data = resp.json() | |
| assert "status" in data | |
| assert data["status"] == "ok" | |
| async def test_stories_returns_list(): | |
| transport = ASGITransport(app=app) | |
| async with AsyncClient(transport=transport, base_url="http://test") as client: | |
| resp = await client.get("/api/stories") | |
| assert resp.status_code == 200 | |
| data = resp.json() | |
| assert "stories" in data | |
| assert isinstance(data["stories"], list) | |
| if data["stories"]: | |
| story = data["stories"][0] | |
| assert "uid" in story | |
| assert "name" in story | |
| assert "slug" in story | |
| assert "poster" in story | |