FILE / ScuroNeko/Laniakea
drafts_test.go
Исходный файл и его история в репозитории.
- add centralized message validation errors - switch command handlers to return error - add explicit long plain-text reply helpers - support strict payload type policy with debug logging - document versioning and changelog workflow
56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package laniakea
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
"testing"
|
|
|
|
"git.nix13.pw/scuroneko/laniakea/tgapi"
|
|
"git.nix13.pw/scuroneko/slog"
|
|
)
|
|
|
|
func TestDraftFlushRequiresChatID(t *testing.T) {
|
|
draft := NewRandomDraftProvider(&tgapi.API{}).NewDraft(tgapi.ParseNone)
|
|
draft.Message = "hello"
|
|
|
|
if err := draft.Flush(); err != ErrDraftChatIDZero {
|
|
t.Fatalf("expected ErrDraftChatIDZero, got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestMsgContextNewDraftWorksWithoutLimiter(t *testing.T) {
|
|
ctx := &MsgContext{
|
|
Api: &tgapi.API{},
|
|
Msg: &tgapi.Message{
|
|
Chat: &tgapi.Chat{ID: 42, Type: string(tgapi.ChatTypePrivate)},
|
|
},
|
|
Logger: slog.CreateLogger(),
|
|
draftProvider: NewRandomDraftProvider(&tgapi.API{}),
|
|
}
|
|
|
|
draft := ctx.NewDraft()
|
|
if draft == nil {
|
|
t.Fatal("expected draft")
|
|
}
|
|
if draft.chatID != 42 {
|
|
t.Fatalf("unexpected chat id: %d", draft.chatID)
|
|
}
|
|
}
|
|
|
|
func TestDraftFlushRejectsLongMessage(t *testing.T) {
|
|
draft := NewRandomDraftProvider(&tgapi.API{}).NewDraft(tgapi.ParseNone).SetChat(42, 0)
|
|
draft.Message = strings.Repeat("a", maxMessageTextLen+1)
|
|
|
|
if err := draft.Flush(); !errors.Is(err, ErrMessageTooLong) {
|
|
t.Fatalf("expected ErrMessageTooLong, got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestDraftPushRejectsLongMessage(t *testing.T) {
|
|
draft := NewRandomDraftProvider(&tgapi.API{}).NewDraft(tgapi.ParseNone).SetChat(42, 0)
|
|
|
|
if err := draft.Push(strings.Repeat("a", maxMessageTextLen+1)); !errors.Is(err, ErrMessageTooLong) {
|
|
t.Fatalf("expected ErrMessageTooLong, got %v", err)
|
|
}
|
|
}
|