all repos — telegram-bot-api @ c0eb5db6c3f5289bcbb06bdd0e68ef5ea6216371

Golang bindings for the Telegram Bot API

Add more tests.
Syfaro syfaro@foxpaw.in
Wed, 13 Apr 2016 17:06:18 -0500
commit

c0eb5db6c3f5289bcbb06bdd0e68ef5ea6216371

parent

289f7ef6adf7ca7c44c5486cf497ef30dbdb9a60

4 files changed, 131 insertions(+), 0 deletions(-)

jump to
M bot_test.gobot_test.go

@@ -230,12 +230,32 @@ t.Fail()

} } +func TestSendWithContact(t *testing.T) { + bot, _ := getBot(t) + + contact := tgbotapi.NewContact(ChatID, "5551234567", "Test") + + if _, err := bot.Send(contact); err != nil { + t.Fail() + } +} + func TestSendWithLocation(t *testing.T) { bot, _ := getBot(t) _, err := bot.Send(tgbotapi.NewLocation(ChatID, 40, 40)) if err != nil { + t.Fail() + } +} + +func TestSendWithVenue(t *testing.T) { + bot, _ := getBot(t) + + venue := tgbotapi.NewVenue(ChatID, "A Test Location", "123 Test Street", 40, 40) + + if _, err := bot.Send(venue); err != nil { t.Fail() } }

@@ -397,6 +417,95 @@ t.Fail()

} bot.RemoveWebhook() +} + +func TestNewInlineQueryResultArticle(t *testing.T) { + result := tgbotapi.NewInlineQueryResultArticle("id", "title", "message") + + if result.Type != "article" || + result.ID != "id" || + result.Title != "title" || + result.InputMessageContent.(tgbotapi.InputTextMessageContent).Text != "message" { + t.Fail() + } +} + +func TestNewInlineQueryResultGIF(t *testing.T) { + result := tgbotapi.NewInlineQueryResultGIF("id", "google.com") + + if result.Type != "gif" || + result.ID != "id" || + result.URL != "google.com" { + t.Fail() + } +} + +func TestNewInlineQueryResultMPEG4GIF(t *testing.T) { + result := tgbotapi.NewInlineQueryResultMPEG4GIF("id", "google.com") + + if result.Type != "mpeg4_gif" || + result.ID != "id" || + result.URL != "google.com" { + t.Fail() + } +} + +func TestNewInlineQueryResultPhoto(t *testing.T) { + result := tgbotapi.NewInlineQueryResultPhoto("id", "google.com") + + if result.Type != "photo" || + result.ID != "id" || + result.URL != "google.com" { + t.Fail() + } +} + +func TestNewInlineQueryResultVideo(t *testing.T) { + result := tgbotapi.NewInlineQueryResultVideo("id", "google.com") + + if result.Type != "video" || + result.ID != "id" || + result.URL != "google.com" { + } +} + +func TestNewEditMessageText(t *testing.T) { + edit := tgbotapi.NewEditMessageText(ChatID, ReplyToMessageID, "new text") + + if edit.Text != "new text" || + edit.BaseEdit.ChatID != ChatID || + edit.BaseEdit.MessageID != ReplyToMessageID { + t.Fail() + } +} + +func TestNewEditMessageCaption(t *testing.T) { + edit := tgbotapi.NewEditMessageCaption(ChatID, ReplyToMessageID, "new caption") + + if edit.Caption != "new caption" || + edit.BaseEdit.ChatID != ChatID || + edit.BaseEdit.MessageID != ReplyToMessageID { + t.Fail() + } +} + +func TestNewEditMessageReplyMarkup(t *testing.T) { + markup := tgbotapi.InlineKeyboardMarkup{ + InlineKeyboard: [][]tgbotapi.InlineKeyboardButton{ + []tgbotapi.InlineKeyboardButton{ + tgbotapi.InlineKeyboardButton{Text: "test"}, + }, + }, + } + + edit := tgbotapi.NewEditMessageReplyMarkup(ChatID, ReplyToMessageID, markup) + + if edit.ReplyMarkup.InlineKeyboard[0][0].Text != "test" || + edit.BaseEdit.ChatID != ChatID || + edit.BaseEdit.MessageID != ReplyToMessageID { + t.Fail() + } + } func TestUpdatesChan(t *testing.T) {
M configs.goconfigs.go

@@ -44,6 +44,7 @@ // Library errors

const ( // ErrBadFileType happens when you pass an unknown type ErrBadFileType = "bad file type" + ErrBadURL = "bad or empty url" ) // Chattable is any config type that can be sent.
M types.gotypes.go

@@ -2,6 +2,7 @@ package tgbotapi

import ( "encoding/json" + "errors" "fmt" "net/url" "strings"

@@ -176,6 +177,10 @@ }

// ParseURL attempts to parse a URL contained within a MessageEntity. func (entity MessageEntity) ParseURL() (*url.URL, error) { + if entity.URL == "" { + return nil, errors.New(ErrBadURL) + } + return url.Parse(entity.URL) }
M types_test.gotypes_test.go

@@ -108,6 +108,22 @@ t.Fail()

} } +func TestMessageEntityParseURLGood(t *testing.T) { + entity := tgbotapi.MessageEntity{URL: "https://www.google.com"} + + if _, err := entity.ParseURL(); err != nil { + t.Fail() + } +} + +func TestMessageEntityParseURLBad(t *testing.T) { + entity := tgbotapi.MessageEntity{URL: ""} + + if _, err := entity.ParseURL(); err == nil { + t.Fail() + } +} + func TestChatIsPrivate(t *testing.T) { chat := tgbotapi.Chat{ID: 10, Type: "private"}