summaryrefslogtreecommitdiff
path: root/backend/tests
diff options
context:
space:
mode:
Diffstat (limited to 'backend/tests')
-rw-r--r--backend/tests/test_api.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/backend/tests/test_api.py b/backend/tests/test_api.py
index 0054c49..395bc12 100644
--- a/backend/tests/test_api.py
+++ b/backend/tests/test_api.py
@@ -598,3 +598,32 @@ def test_financials_route_period_param(monkeypatch) -> None:
monkeypatch.setattr(main.data_service, "get_financials", mock_get_financials)
main.ticker_financials("AAPL", period="quarterly")
assert captured == ["quarterly"]
+
+
+def test_valuation_schema_structure() -> None:
+ from app.schemas import DcfResult, MultipleResult, ValuationResponse
+
+ dcf_unavail = DcfResult(available=False)
+ assert dcf_unavail.available is False
+ assert dcf_unavail.wacc == 0.10
+ assert dcf_unavail.terminal_growth == 0.03
+ assert dcf_unavail.error is None
+ assert dcf_unavail.intrinsic_value_per_share is None
+
+ mult_unavail = MultipleResult(available=False)
+ assert mult_unavail.available is False
+ assert mult_unavail.implied_price_per_share is None
+
+ resp = ValuationResponse(
+ symbol="AAPL",
+ current_price=150.0,
+ shares_outstanding=15_000_000_000.0,
+ dcf=DcfResult(available=True, intrinsic_value_per_share=182.0, growth_rate_used=0.082),
+ ev_ebitda=MultipleResult(available=True, implied_price_per_share=178.0, multiple_used=20.0),
+ ev_revenue=MultipleResult(available=False),
+ price_to_book=MultipleResult(available=False),
+ )
+ assert resp.symbol == "AAPL"
+ assert resp.dcf.intrinsic_value_per_share == 182.0
+ assert resp.ev_ebitda.multiple_used == 20.0
+ assert resp.ev_revenue.available is False