48 lines
2.0 KiB
Python
48 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""Unit tests for the trading domain helpers."""
|
|
|
|
from backend.domains import trading as trading_domain
|
|
|
|
|
|
def test_trading_domain_payload_wrappers(monkeypatch):
|
|
monkeypatch.setattr(trading_domain, "get_prices", lambda ticker, start_date, end_date: [{"close": 1}])
|
|
monkeypatch.setattr(trading_domain, "get_financial_metrics", lambda ticker, end_date, period, limit: [{"ticker": ticker}])
|
|
monkeypatch.setattr(trading_domain, "get_company_news", lambda ticker, end_date, start_date=None, limit=1000: [{"ticker": ticker}])
|
|
monkeypatch.setattr(trading_domain, "get_insider_trades", lambda ticker, end_date, start_date=None, limit=1000: [{"ticker": ticker}])
|
|
monkeypatch.setattr(trading_domain, "get_market_cap", lambda ticker, end_date: 2.5e12)
|
|
|
|
assert trading_domain.get_prices_payload(ticker="AAPL", start_date="2026-03-01", end_date="2026-03-16") == {
|
|
"ticker": "AAPL",
|
|
"prices": [{"close": 1}],
|
|
}
|
|
assert trading_domain.get_financials_payload(ticker="AAPL", end_date="2026-03-16") == {
|
|
"financial_metrics": [{"ticker": "AAPL"}],
|
|
}
|
|
assert trading_domain.get_news_payload(ticker="AAPL", end_date="2026-03-16") == {
|
|
"news": [{"ticker": "AAPL"}],
|
|
}
|
|
assert trading_domain.get_insider_trades_payload(ticker="AAPL", end_date="2026-03-16") == {
|
|
"insider_trades": [{"ticker": "AAPL"}],
|
|
}
|
|
assert trading_domain.get_market_cap_payload(ticker="AAPL", end_date="2026-03-16") == {
|
|
"ticker": "AAPL",
|
|
"end_date": "2026-03-16",
|
|
"market_cap": 2.5e12,
|
|
}
|
|
|
|
|
|
def test_get_market_status_payload_uses_market_service(monkeypatch):
|
|
class _FakeMarketService:
|
|
def __init__(self, tickers):
|
|
self.tickers = tickers
|
|
|
|
def get_market_status(self):
|
|
return {"status": "open", "status_text": "Open"}
|
|
|
|
monkeypatch.setattr(trading_domain, "MarketService", _FakeMarketService)
|
|
|
|
assert trading_domain.get_market_status_payload() == {
|
|
"status": "open",
|
|
"status_text": "Open",
|
|
}
|