Files
overnight-trading-bot/internal/notify/telegram_test.go
T
2026-06-07 21:01:40 +00:00

50 lines
1.1 KiB
Go

package notify
import (
"testing"
"time"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
"overnight-trading-bot/internal/domain"
)
func TestPrefix(t *testing.T) {
tests := map[domain.Severity]string{
domain.SeverityInfo: "[INFO]",
domain.SeverityWarn: "[WARN]",
domain.SeverityAlert: "[ALERT]",
domain.Severity("alert"): "[ALERT]",
}
for severity, want := range tests {
if got := prefix(severity); got != want {
t.Fatalf("prefix(%s)=%s, want %s", severity, got, want)
}
}
}
func TestFormatReportPrefix(t *testing.T) {
if got := formatMessage("[REPORT]", "daily"); got != "[REPORT] daily" {
t.Fatalf("message=%s", got)
}
}
func TestTelegramRetryDelayUsesRetryAfter(t *testing.T) {
err := &tgbotapi.Error{
Code: 429,
ResponseParameters: tgbotapi.ResponseParameters{
RetryAfter: 7,
},
}
if got := telegramRetryDelay(err, 0); got != 7*time.Second {
t.Fatalf("delay=%s, want 7s", got)
}
if got := telegramRetryDelay(assertErr{}, 1); got != 2*time.Second {
t.Fatalf("fallback delay=%s, want 2s", got)
}
}
type assertErr struct{}
func (assertErr) Error() string { return "boom" }