You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
"""Unit tests for oracle_client.fred (FredService)."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import pytest
|
|
from pytest_httpx import HTTPXMock
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_observations(httpx_mock: HTTPXMock, fred_observations_fixture):
|
|
"""FredService.get_observations가 FredProxyResponse를 올바르게 반환한다."""
|
|
from libs.oracle_client.client import OracleClient
|
|
from libs.oracle_client.fred import FredService
|
|
from libs.oracle_client.models import FredProxyResponse
|
|
|
|
httpx_mock.add_response(json=fred_observations_fixture)
|
|
|
|
async with OracleClient("http://oracle:18001") as client:
|
|
svc = FredService(client)
|
|
result = await svc.get_observations("DGS10")
|
|
|
|
assert isinstance(result, FredProxyResponse)
|
|
assert result.series_id == "DGS10"
|
|
assert len(result.observations) == 4
|
|
assert result.observations[0].value == pytest.approx(4.32)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_series_info(httpx_mock: HTTPXMock):
|
|
"""FredService.get_series_info가 FredSeriesInfo를 올바르게 반환한다."""
|
|
from libs.oracle_client.client import OracleClient
|
|
from libs.oracle_client.fred import FredService
|
|
from libs.oracle_client.models import FredSeriesInfo
|
|
|
|
series_response = {
|
|
"success": True,
|
|
"data": {
|
|
"seriess": [
|
|
{
|
|
"id": "DGS10",
|
|
"title": "Market Yield on U.S. Treasury Securities at 10-Year Constant Maturity",
|
|
"frequency": "Daily",
|
|
"units": "Percent Per Year",
|
|
}
|
|
]
|
|
},
|
|
}
|
|
httpx_mock.add_response(json=series_response)
|
|
|
|
async with OracleClient("http://oracle:18001") as client:
|
|
svc = FredService(client)
|
|
result = await svc.get_series_info("DGS10")
|
|
|
|
assert isinstance(result, FredSeriesInfo)
|
|
assert result.id == "DGS10"
|
|
assert result.frequency == "Daily"
|