"""vol_breakout 텔레그램 알림 포맷.""" from bithumb.notifications.telegram import TelegramNotifier def test_notify_vol_breakout_buy_message(monkeypatch) -> None: """매수 알림이 Binance 스타일 형식인지 확인.""" sent: list[str] = [] def _capture(text: str) -> bool: sent.append(text) return True n = TelegramNotifier("token", "123", enabled=True) monkeypatch.setattr(n, "send_message", _capture) n.notify_vol_breakout_trade( mode="live", symbol="TRX", side="buy", price=489.24, order_krw=1_187_000, order_coin=2.426929, equity_krw=500_000, ts="2026-06-27 19:30:05", ) assert len(sent) == 1 text = sent[0] assert "[실거래] 롱 진입(매수)" in text assert "TRXKRW @ 489.24" in text assert "수량 2.426929" in text assert "≈1,187,000원" in text assert "사유 signal_vol_breakout" in text assert "시각 2026-06-27 19:30:05" in text def test_notify_vol_breakout_sell_message(monkeypatch) -> None: """매도 알림에 손익·자본이 포함되는지 확인.""" sent: list[str] = [] def _capture(text: str) -> bool: sent.append(text) return True n = TelegramNotifier("token", "123", enabled=True) monkeypatch.setattr(n, "send_message", _capture) n.notify_vol_breakout_trade( mode="live", symbol="TRX", side="sell", price=486.76, order_krw=1_180_000, order_coin=2.426929, equity_krw=499_691, pnl_krw=-7_000, pnl_pct=-0.590, ts="2026-06-27 19:45:05", ) text = sent[0] assert "[실거래] 롱 청산(매도)" in text assert "TRXKRW @ 486.76" in text assert "손익 -7,000원 (-0.590%)" in text assert "자본 499,691원" in text