Merge pull request #33 from zhulik/master Some small helpers added to Message and Bot, tests
Syfaro syfaro@foxpaw.in
Wed, 16 Dec 2015 07:56:30 -0600
4 files changed,
99 insertions(+),
2 deletions(-)
M
bot_test.go
→
bot_test.go
@@ -184,6 +184,8 @@ msg := tgbotapi.NewAudioUpload(ChatID, "tests/audio.mp3")
msg.Title = "TEST" msg.Duration = 10 msg.Performer = "TEST" + msg.MimeType = "audio/mpeg" + msg.FileSize = 688 _, err := bot.Send(msg) if err != nil {
M
configs.go
→
configs.go
@@ -93,6 +93,8 @@ FilePath string
File interface{} FileID string UseExisting bool + MimeType string + FileSize int } // Params returns map[string]string representation of BaseFile@@ -116,6 +118,14 @@ return params, err
} params["reply_markup"] = string(data) + } + + if len(file.MimeType) > 0 { + params["mime_type"] = file.MimeType + } + + if file.FileSize > 0 { + params["file_size"] = strconv.Itoa(file.FileSize) } return params, nil
M
types.go
→
types.go
@@ -127,9 +127,25 @@ func (m *Message) IsCommand() bool {
return m.Text != "" && m.Text[0] == '/' } -// Command returns first word from message +// Command if message is command returns first word from message(entire command) +// otherwise returns empty string func (m *Message) Command() string { - return strings.Split(m.Text, " ")[0] + if m.IsCommand() { + return strings.SplitN(m.Text, " ", 2)[0] + } + return "" +} + +// CommandArguments if message is command, returns all text after command, excluding the command itself +// otherwise returns empty string +func (m *Message) CommandArguments() string { + if m.IsCommand() { + split := strings.SplitN(m.Text, " ", 2) + if len(split) == 2 { + return strings.SplitN(m.Text, " ", 2)[1] + } + } + return "" } // PhotoSize contains information about photos, including ID and Width and Height.
M
types_test.go
→
types_test.go
@@ -31,6 +31,75 @@ t.Fail()
} } +func TestMessageIsCommandWithCommand(t *testing.T) { + message := tgbotapi.Message{Text: "/command"} + + if message.IsCommand() != true { + t.Fail() + } +} + +func TestIsCommandWithText(t *testing.T) { + message := tgbotapi.Message{Text: "some text"} + + if message.IsCommand() != false { + t.Fail() + } +} + +func TestIsCommandWithEmptyText(t *testing.T) { + message := tgbotapi.Message{Text: ""} + + if message.IsCommand() != false { + t.Fail() + } +} + +func TestCommandWithCommand(t *testing.T) { + message := tgbotapi.Message{Text: "/command"} + + if message.Command() != "/command" { + t.Fail() + } +} + +func TestCommandWithEmptyText(t *testing.T) { + message := tgbotapi.Message{Text: ""} + + if message.Command() != "" { + t.Fail() + } +} + +func TestCommandWithNonCommand(t *testing.T) { + message := tgbotapi.Message{Text: "test text"} + + if message.Command() != "" { + t.Fail() + } +} + +func TestMessageCommandArgumentsWithArguments(t *testing.T) { + message := tgbotapi.Message{Text: "/command with arguments"} + if message.CommandArguments() != "with arguments" { + t.Fail() + } +} + +func TestMessageCommandArgumentsWithoutArguments(t *testing.T) { + message := tgbotapi.Message{Text: "/command"} + if message.CommandArguments() != "" { + t.Fail() + } +} + +func TestMessageCommandArgumentsForNonCommand(t *testing.T) { + message := tgbotapi.Message{Text: "test text"} + if message.CommandArguments() != "" { + t.Fail() + } +} + func TestChatIsPrivate(t *testing.T) { chat := tgbotapi.Chat{ID: 10, Type: "private"}