from unittest.mock import patch, AsyncMock import pytest from httpx import AsyncClient, ASGITransport from main import app @pytest.fixture async def client(): transport = ASGITransport(app=app) async with AsyncClient(transport=transport, base_url="http://test") as c: yield c @pytest.mark.asyncio @patch("routes_macro.macro_service.get_macro_overview", new_callable=AsyncMock) async def test_macro_overview(mock_overview, client): mock_overview.return_value = { "fed_funds_rate": {"value": 5.33, "date": "2026-01-01"}, "us_10y_treasury": {"value": 4.25, "date": "2026-01-01"}, "unemployment_rate": {"value": 3.7, "date": "2026-01-01"}, } resp = await client.get("/api/v1/macro/overview") assert resp.status_code == 200 data = resp.json()["data"] assert data["fed_funds_rate"]["value"] == 5.33 @pytest.mark.asyncio @patch("routes_macro.macro_service.get_series", new_callable=AsyncMock) async def test_macro_series(mock_series, client): mock_series.return_value = [ {"date": "2026-01-01", "value": 5.33} ] resp = await client.get("/api/v1/macro/series/FEDFUNDS?limit=5") assert resp.status_code == 200 data = resp.json()["data"] assert len(data) == 1