"""Tests for the signal generator module.""" import pytest from datetime import datetime from indicators.multi_timeframe import TradeDirection from strategy.signal_generator import TradeSignal class TestTradeSignal: """Tests for TradeSignal dataclass.""" def test_risk_reward_ratio(self): signal = TradeSignal( symbol="BTC/USDT", direction=TradeDirection.LONG, entry_price=50000, stop_loss=49000, take_profit=52000, confidence=4, timeframe="15m", ) assert signal.risk_reward_ratio == 2.0 def test_risk_reward_zero_risk(self): signal = TradeSignal( symbol="BTC/USDT", direction=TradeDirection.LONG, entry_price=50000, stop_loss=50000, take_profit=52000, confidence=3, timeframe="15m", ) assert signal.risk_reward_ratio == 0.0 def test_to_dict(self): signal = TradeSignal( symbol="ETH/USDT", direction=TradeDirection.SHORT, entry_price=3000, stop_loss=3100, take_profit=2800, confidence=5, timeframe="1h", reasons=["BOS", "OB", "FVG"], ) d = signal.to_dict() assert d["symbol"] == "ETH/USDT" assert d["direction"] == "SHORT" assert d["confidence"] == 5 assert len(d["reasons"]) == 3