Some helper methods added to Message. Some tests added. Small fixes

bot-api-6.1
Gleb Sinyavsky 2015-12-13 20:31:59 +03:00
parent eb6b784a5a
commit 1cede9cf45
3 changed files with 89 additions and 4 deletions

View File

@ -93,8 +93,8 @@ type BaseFile struct {
File interface{} File interface{}
FileID string FileID string
UseExisting bool UseExisting bool
MimeType string MimeType string
FileSize int FileSize int
} }
// Params returns map[string]string representation of BaseFile // Params returns map[string]string representation of BaseFile

View File

@ -127,9 +127,25 @@ func (m *Message) IsCommand() bool {
return m.Text != "" && m.Text[0] == '/' 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 { 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. // PhotoSize contains information about photos, including ID and Width and Height.

View File

@ -31,6 +31,75 @@ func TestMessageTime(t *testing.T) {
} }
} }
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) { func TestChatIsPrivate(t *testing.T) {
chat := tgbotapi.Chat{ID: 10, Type: "private"} chat := tgbotapi.Chat{ID: 10, Type: "private"}