summaryrefslogtreecommitdiff
path: root/backend/tests/test_api.py
diff options
context:
space:
mode:
Diffstat (limited to 'backend/tests/test_api.py')
-rw-r--r--backend/tests/test_api.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/backend/tests/test_api.py b/backend/tests/test_api.py
index 2ec4a08..300069c 100644
--- a/backend/tests/test_api.py
+++ b/backend/tests/test_api.py
@@ -21,6 +21,7 @@ def clear_service_caches() -> None:
data_service.VALUATION_CACHE.clear()
data_service.HIST_RATIOS_CACHE.clear()
data_service.RATIOS_ENDPOINT_CACHE.clear()
+ data_service.SECTOR_BENCHMARK_CACHE.clear()
def quarterly_frame(rows: dict[str, list[float]]) -> pd.DataFrame:
@@ -1170,6 +1171,47 @@ def test_get_ratios_interest_coverage(monkeypatch) -> None:
assert result["interest_coverage"]["spark"] == []
+def test_get_ratios_sector_benchmark_fields(monkeypatch) -> None:
+ clear_service_caches()
+ monkeypatch.setattr(
+ data_service,
+ "compute_ttm_ratios",
+ lambda symbol: {
+ "market_cap": 1000.0,
+ "trailing_pe": 20.0,
+ "price_to_book": 5.0,
+ "current_ratio": 2.0,
+ "dividend_yield_ttm": 0.01,
+ },
+ )
+ monkeypatch.setattr(data_service, "compute_historical_ratios", lambda symbol: {})
+ monkeypatch.setattr(
+ data_service,
+ "compute_sector_ratio_benchmarks",
+ lambda symbol: {
+ "trailing_pe": 18.0,
+ "price_to_book": 4.0,
+ "current_ratio": 1.7,
+ "dividend_yield_ttm": 0.012,
+ },
+ )
+ monkeypatch.setattr(data_service, "get_company_info", lambda symbol: {})
+ monkeypatch.setattr(
+ data_service,
+ "get_income_statement",
+ lambda symbol, quarterly=True: quarterly_frame({"Total Revenue": [100.0, 100.0, 100.0, 100.0]}),
+ )
+ monkeypatch.setattr(data_service, "get_balance_sheet", lambda symbol, quarterly=True: quarterly_frame({}))
+ monkeypatch.setattr(data_service, "get_cash_flow", lambda symbol, quarterly=True: quarterly_frame({}))
+
+ result = data_service.get_ratios("AAPL")
+
+ assert result["pe_ttm"]["vs_sector"] == 18.0
+ assert result["price_to_book"]["vs_sector"] == 4.0
+ assert result["current_ratio"]["vs_sector"] == 1.7
+ assert result["dividend_yield"]["vs_sector"] == pytest.approx(0.012)
+
+
def test_ticker_ratios_route(monkeypatch) -> None:
"""GET /api/tickers/{symbol}/ratios returns a valid RatiosResponse shape."""
clear_service_caches()