refactor: чистка мёртвого кода, лимит ходов D3, HTML-экранирование и UTF-8 обрезка в Telegram
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
"sync"
|
||||
"testing"
|
||||
"time"
|
||||
"unicode/utf8"
|
||||
|
||||
"github.com/kamelion/ratatoskr-go/internal/chat"
|
||||
)
|
||||
@@ -111,6 +112,36 @@ func TestSendWithOptions(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestFormatOutgoingEscapesText(t *testing.T) {
|
||||
if got := formatOutgoing(chat.Message{Text: "2 < 3 & 4 > 1"}); got != "2 < 3 & 4 > 1" {
|
||||
t.Errorf("text escape = %q", got)
|
||||
}
|
||||
got := formatOutgoing(chat.Message{
|
||||
Text: "a<b",
|
||||
Options: []chat.Option{{ID: "x", Label: "l&l"}},
|
||||
})
|
||||
if !strings.Contains(got, "a<b") || !strings.Contains(got, "l&l") {
|
||||
t.Errorf("options escape = %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTruncateUTF8(t *testing.T) {
|
||||
long := strings.Repeat("я", 5000)
|
||||
tr := truncateUTF8(long, 4000)
|
||||
if len(tr) != 4000 {
|
||||
t.Fatalf("len = %d, want 4000", len(tr))
|
||||
}
|
||||
if !utf8.ValidString(tr) {
|
||||
t.Fatal("truncated string is not valid UTF-8")
|
||||
}
|
||||
if got := truncateUTF8("привет", 4000); got != "привет" {
|
||||
t.Fatalf("short text changed: %q", got)
|
||||
}
|
||||
if got := truncateUTF8("", 4000); got != "" {
|
||||
t.Fatalf("empty text changed: %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestIncoming(t *testing.T) {
|
||||
f := newFakeTG(t)
|
||||
ch := New("TOKEN", time.Second)
|
||||
@@ -143,4 +174,4 @@ func TestIncoming(t *testing.T) {
|
||||
case <-ctx.Done():
|
||||
t.Fatal("timeout ожидания входящего")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user