from app.notifiers.telegram_lotto import (
    _format_urgent_signal,
    _format_signal_digest,
)


def test_urgent_signal_format_basic():
    event = {
        "fire_level": "urgent",
        "triggered_at": "2026-05-20T07:18:00.000Z",
        "results": [
            {"metric": "sim_signal", "value": 1.84, "z_score": 3.9,
             "baseline_mu": 1.02, "baseline_sigma": 0.21, "payload": {},
             "fire_level": "urgent"},
            {"metric": "drift", "value": 0.18, "z_score": 3.0,
             "baseline_mu": 0.06, "baseline_sigma": 0.04, "fire_level": "normal",
             "payload": {"weights_now": {"gap_focus": 0.5, "hot_focus": 0.5},
                         "weights_prev": {"gap_focus": 0.3, "hot_focus": 0.7}}},
        ],
    }
    text = _format_urgent_signal(event)
    assert "🚨" in text
    assert "Sim Consensus" in text
    assert "z=3.9" in text
    assert "Strategy Drift" in text


def test_signal_digest_format_with_signals():
    digest = {
        "evaluated": 6,
        "fired": 2,
        "signals": [
            {"metric": "sim_signal", "fire_level": "normal", "z_score": 1.7,
             "triggered_at": "2026-05-20T16:18:00Z", "payload": {}},
            {"metric": "confidence", "fire_level": "normal", "z_score": 1.6,
             "triggered_at": "2026-05-20T09:05:00Z", "payload": {}},
        ],
        "weights_trend": {"gap_focus": +0.12, "hot_focus": -0.02, "pair_bias": -0.08},
    }
    text = _format_signal_digest(digest)
    assert "📊" in text
    assert "지난 24h" in text
    assert "z=1.7" in text


def test_signal_digest_empty_returns_empty_string():
    """발화 0건이면 빈 문자열 → 발송 자체 skip 가능."""
    text = _format_signal_digest({"evaluated": 6, "fired": 0, "signals": [], "weights_trend": {}})
    assert text == ""
