Files
dzentra_bot/app/tests/unit/trading/strategies/test_trend_quote.py

53 lines
1.3 KiB
Python

# app/tests/unit/trading/strategies/test_trend_quote.py
from __future__ import annotations
import inspect
from datetime import datetime, timezone
from decimal import Decimal
import src.trading.strategies.trend as module
from src.market_data.acquisition.models.quote import Quote
from src.trading.strategies.trend import TrendStrategy
def _quote(
*,
last: str = "100.5",
bid: str = "100.0",
ask: str = "101.0",
) -> Quote:
return Quote(
symbol="BTC/USD_LEVERAGE",
last_price=Decimal(last),
bid_price=Decimal(bid),
ask_price=Decimal(ask),
exchange_timestamp=None,
received_at=datetime.now(timezone.utc),
source="dzengi",
)
def test_trend_uses_midpoint_from_quote() -> None:
result = TrendStrategy()._analysis_price(_quote())
assert result == 100.5
def test_trend_quote_snapshot_is_json_compatible_projection() -> None:
result = TrendStrategy()._quote_snapshot(_quote())
assert result == {
"symbol": "BTC/USD_LEVERAGE",
"last_price": 100.5,
"bid_price": 100.0,
"ask_price": 101.0,
"source": "dzengi",
}
def test_trend_has_no_legacy_market_snapshot_call() -> None:
source = inspect.getsource(module.TrendStrategy)
assert "get_quote(" in source