package telegram_test import ( "testing" "ldpost/shared/telegram" ) func TestEscapeMarkdown(t *testing.T) { // All MarkdownV2 special chars must be escaped with backslash special := []rune{'_', '*', '[', ']', '(', ')', '~', '`', '>', '#', '+', '-', '=', '|', '{', '}', '.', '!'} for _, ch := range special { input := string(ch) got := telegram.EscapeMarkdown(input) want := "\\" + input if got != want { t.Errorf("EscapeMarkdown(%q) = %q, want %q", input, got, want) } } } func TestEscapeMarkdown_PlainText(t *testing.T) { cases := []struct { input string want string }{ {"hello world", "hello world"}, {"", ""}, {"abc123", "abc123"}, } for _, c := range cases { got := telegram.EscapeMarkdown(c.input) if got != c.want { t.Errorf("EscapeMarkdown(%q) = %q, want %q", c.input, got, c.want) } } } func TestEscapeMarkdown_MixedContent(t *testing.T) { input := "Hello, world! How are you?" got := telegram.EscapeMarkdown(input) // '!' and '.' and '?' (not in special) — only '!' should be escaped // ',' not special, '!' is special, '.' is special, '?' not special // expected: "Hello, world\! How are you?" want := `Hello, world\! How are you?` if got != want { t.Errorf("EscapeMarkdown(%q)\n got: %q\n want: %q", input, got, want) } } func TestEscapeMarkdown_CodeBlock(t *testing.T) { // Typical tech content input := "Use fmt.Println(\"hello\") in Go" got := telegram.EscapeMarkdown(input) // '.' is special → escaped // '(' and ')' are special → escaped // '"' is not special want := `Use fmt\.Println\("hello"\) in Go` if got != want { t.Errorf("EscapeMarkdown(%q)\n got: %q\n want: %q", input, got, want) } } func TestNewBot(t *testing.T) { bot := telegram.NewBot("test-token", "123456") if bot == nil { t.Fatal("NewBot retornou nil") } if bot.Token != "test-token" { t.Errorf("Token: got %q, want %q", bot.Token, "test-token") } if bot.ChatID != "123456" { t.Errorf("ChatID: got %q, want %q", bot.ChatID, "123456") } }