package main import ( "strings" "testing" ) func TestEchoHandler_PlainText(t *testing.T) { ft := NewFakeTelegram(t) h := &EchoHandler{tg: ft.Client()} bot := Bot{Slug: "echo", Token: "t1", Secret: "s"} if err := h.Handle(bgCtx(), MakeUpdate(1, 100, 42, 1, "salut"), bot); err != nil { t.Fatalf("handle: %v", err) } sent := ft.Sent() if len(sent) != 1 || sent[0].ChatID != 42 || sent[0].Text != "salut" { t.Fatalf("expected echo of 'salut' to chat 42, got %+v", sent) } } func TestEchoHandler_SlashEcho_StripsCommand(t *testing.T) { ft := NewFakeTelegram(t) h := &EchoHandler{tg: ft.Client()} bot := Bot{Slug: "echo", Token: "t1", Secret: "s"} if err := h.Handle(bgCtx(), MakeUpdate(2, 100, 42, 1, "/echo coucou monde"), bot); err != nil { t.Fatalf("handle: %v", err) } sent := ft.Sent() if len(sent) != 1 || sent[0].Text != "coucou monde" { t.Fatalf("expected reply 'coucou monde', got %q", sent[0].Text) } } func TestEchoHandler_EmptyTextNoSend(t *testing.T) { ft := NewFakeTelegram(t) h := &EchoHandler{tg: ft.Client()} bot := Bot{Slug: "echo", Token: "t1", Secret: "s"} if err := h.Handle(bgCtx(), MakeUpdate(3, 100, 42, 1, " "), bot); err != nil { t.Fatalf("handle: %v", err) } if len(ft.Sent()) != 0 { t.Fatalf("empty text should send nothing, got %d", len(ft.Sent())) } } func TestEchoHandler_SlashEchoBare_DefaultMessage(t *testing.T) { ft := NewFakeTelegram(t) h := &EchoHandler{tg: ft.Client()} bot := Bot{Slug: "echo", Token: "t1", Secret: "s"} _ = h.Handle(bgCtx(), MakeUpdate(4, 100, 42, 1, "/echo"), bot) sent := ft.Sent() if len(sent) != 1 || !strings.Contains(sent[0].Text, "echo bot online") { t.Fatalf("expected default greeting, got %+v", sent) } }