(new): keyboard helpers
Golang lint / lint (push) Successful in 7m2s
Golang lint / lint (pull_request) Successful in 7m7s

(tests): payload encoding
(doc): changelog
This commit is contained in:
2026-05-04 11:35:02 +03:00
parent 7205b21fa2
commit daa1b862ed
5 changed files with 83 additions and 11 deletions
+28
View File
@@ -45,6 +45,34 @@ func TestInlineKeyboardBuilderPreservesConfiguredButtonFields(t *testing.T) {
}
}
func TestInlineKeyboardButtonBuilderSetCallbackDataDefaultsToJSON(t *testing.T) {
kb := NewInlineKeyboardBase64(1).
AddButton(NewInlineKeyboardButton("A").SetCallbackData("cmd", 1, "two"))
button := kb.Get().InlineKeyboard[0][0]
if !strings.Contains(button.CallbackData, `"cmd":"cmd"`) {
t.Fatalf("expected JSON callback payload, got %q", button.CallbackData)
}
}
func TestInlineKeyboardButtonBuilderSetCallbackDataUsesConfiguredPayloadType(t *testing.T) {
kb := NewInlineKeyboardJSON(1).
AddButton(NewInlineKeyboardButton("A").
SetPayloadType(BotPayloadBase64).
SetCallbackData("cmd", 1, "two"),
)
got, _, err := decodePayload(BotPayloadJSON, kb.Get().InlineKeyboard[0][0].CallbackData, false)
if err != nil {
t.Fatalf("decodePayload returned error: %v", err)
}
want := CallbackData{Command: "cmd", Args: []string{"1", "two"}}
if !reflect.DeepEqual(got, want) {
t.Fatalf("unexpected payload: got %#v want %#v", got, want)
}
}
func TestInlineKeyboardGetPayloadTypeReturnsLocalOverride(t *testing.T) {
kb := NewInlineKeyboardJSON(2)
if got := kb.GetPayloadType(); got != BotPayloadJSON {