tests: implement b.EditReplyMarkup() function test

pull/269/head
Demian 4 years ago
parent ad254b61d9
commit 299838450e

@ -726,24 +726,29 @@ func (b *Bot) Edit(msg Editable, what interface{}, options ...interface{}) (*Mes
}
// EditReplyMarkup used to edit reply markup of already sent message.
// Pass nil or empty ReplyMarkup to delete it from the message.
//
// On success, returns edited message object
// On success, returns edited message object.
// This function will panic upon nil Editable.
func (b *Bot) EditReplyMarkup(message Editable, markup *ReplyMarkup) (*Message, error) {
messageID, chatID := message.MessageSig()
params := map[string]string{}
// if inline message
if chatID == 0 {
if chatID == 0 { // if inline message
params["inline_message_id"] = messageID
} else {
params["chat_id"] = strconv.FormatInt(chatID, 10)
params["message_id"] = messageID
}
if markup == nil {
// will delete reply markup
markup = &ReplyMarkup{}
}
processButtons(markup.InlineKeyboard)
jsonMarkup, _ := json.Marshal(markup)
params["reply_markup"] = string(jsonMarkup)
data, _ := json.Marshal(markup)
params["reply_markup"] = string(data)
data, err := b.Raw("editMessageReplyMarkup", params)
if err != nil {

@ -4,6 +4,7 @@ import (
"net/http"
"os"
"strconv"
"strings"
"testing"
"time"
@ -332,4 +333,30 @@ func TestBot(t *testing.T) {
assert.NoError(t, err)
assert.NotNil(t, msg.Location)
})
t.Run("EditReplyMarkup()", func(t *testing.T) {
markup := &ReplyMarkup{
InlineKeyboard: [][]InlineButton{{{
Data: "btn",
Text: "Hi Telebot!",
}}},
}
badMarkup := &ReplyMarkup{
InlineKeyboard: [][]InlineButton{{{
Data: strings.Repeat("*", 65),
Text: "Bad Button",
}}},
}
msg, err := b.EditReplyMarkup(msg, markup)
assert.NoError(t, err)
assert.Equal(t, msg.ReplyMarkup.InlineKeyboard, markup.InlineKeyboard)
msg, err = b.EditReplyMarkup(msg, nil)
assert.NoError(t, err)
assert.Nil(t, msg.ReplyMarkup.InlineKeyboard)
_, err = b.EditReplyMarkup(msg, badMarkup)
assert.Equal(t, ErrButtonDataInvalid, err)
})
}

Loading…
Cancel
Save