"""Tests for Divergence strategy."""

import pytest
from decimal import Decimal
from src.strategies.technical.divergence_strategy import DivergenceStrategy
from src.strategies.base import SignalType


class TestDivergenceStrategy:
    """Tests for DivergenceStrategy."""
    
    @pytest.fixture
    def strategy(self):
        """Create Divergence strategy instance."""
        return DivergenceStrategy(
            name="test_divergence",
            parameters={
                'indicator_type': 'rsi',
                'rsi_period': 14,
                'lookback': 20,
                'min_swings': 2,
                'min_confidence': 0.5
            }
        )
    
    def test_initialization(self, strategy):
        """Test strategy initialization."""
        assert strategy.indicator_type == 'rsi'
        assert strategy.rsi_period == 14
        assert strategy.lookback == 20
        assert strategy.min_swings == 2
        assert strategy.min_confidence == 0.5
    
    def test_on_tick_insufficient_data(self, strategy):
        """Test that strategy returns None with insufficient data."""
        signal = strategy.on_tick(
            symbol="BTC/USD",
            price=Decimal("50000"),
            timeframe="1h",
            data={'volume': 1000}
        )
        assert signal is None
    
    def test_indicator_type_selection(self, strategy):
        """Test indicator type selection."""
        assert strategy.indicator_type == 'rsi'
        
        # Test MACD indicator type
        macd_strategy = DivergenceStrategy(
            name="test_divergence_macd",
            parameters={'indicator_type': 'macd'}
        )
        assert macd_strategy.indicator_type == 'macd'
    
    def test_strategy_metadata(self, strategy):
        """Test strategy metadata."""
        assert strategy.name == "test_divergence"
        assert strategy.enabled is False

