"""task-2370 P2 — scope_violation_alert 검증."""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[2]))

from scripts.scope_violation_alert import format_violation_message  # pyright: ignore[reportMissingImports]


def test_format_violation_message_basic():
    msg = format_violation_message("task-2360", ["scripts/auto_merge.py"], None)
    assert "⚠️ SCOPE VIOLATION" in msg
    assert "task-2360" in msg
    assert "scripts/auto_merge.py" in msg


def test_format_violation_message_with_context():
    msg = format_violation_message("task-2370", ["a.py", "b.py"], {"reason": "test"})
    assert "reason" in msg
    assert "test" in msg


def test_format_violation_message_truncates_long_list():
    violations = [f"file{i}.py" for i in range(30)]
    msg = format_violation_message("task-9999", violations, None)
    assert "총 30건" in msg


def test_send_scope_violation_dry_run_no_token(monkeypatch):
    """BOT_TOKEN 미설정 → dry_run 결과."""
    monkeypatch.setenv("ANU_CONFIRM_BOT_TOKEN", "")
    monkeypatch.setenv("SCOPE_VIOLATION_CHAT_ID", "")
    import importlib
    import scripts.scope_violation_alert as mod  # pyright: ignore[reportMissingImports]
    importlib.reload(mod)
    result = mod.send_scope_violation("task-2370", ["a.py"], None)
    assert result["dry_run"] is True
