from app.core.config import settings from app.services.market_analyzer import _sideways_message_v2 def test_rule_message_uses_effective_thresholds(): msg = _sideways_message_v2(2500.0, 2400.0, False) enter = settings.MEAN_REVERSION_ADX_SIDEWAYS - 2.0 exit_ = settings.MEAN_REVERSION_ADX_SIDEWAYS + 2.0 assert f"ADX<{enter:g}" in msg and f">{exit_:g}" in msg assert f"{settings.MEAN_REVERSION_SLOPE_THRESHOLD:g}" in msg assert "AND" in msg and "또는" not in msg and "HMM" not in msg def test_hmm_override_message_names_hmm(monkeypatch): monkeypatch.setattr(settings, "MEAN_REVERSION_ADX_SIDEWAYS", 30.0) msg = _sideways_message_v2(2500.0, 2400.0, True) assert "HMM" in msg and "ADX<" not in msg def test_message_follows_settings(monkeypatch): monkeypatch.setattr(settings, "MEAN_REVERSION_ADX_SIDEWAYS", 26.0) assert "ADX<24" in _sideways_message_v2(1, 1, False)