1package tgbotapi_test 2 3import ( 4 "testing" 5 "time" 6 7 "github.com/go-telegram-bot-api/telegram-bot-api" 8) 9 10func TestUserStringWith(t *testing.T) { 11 user := tgbotapi.User{ 12 ID: 0, 13 FirstName: "Test", 14 LastName: "Test", 15 UserName: "", 16 LanguageCode: "en", 17 IsBot: false, 18 } 19 20 if user.String() != "Test Test" { 21 t.Fail() 22 } 23} 24 25func TestUserStringWithUserName(t *testing.T) { 26 user := tgbotapi.User{ 27 ID: 0, 28 FirstName: "Test", 29 LastName: "Test", 30 UserName: "@test", 31 LanguageCode: "en", 32 } 33 34 if user.String() != "@test" { 35 t.Fail() 36 } 37} 38 39func TestMessageTime(t *testing.T) { 40 message := tgbotapi.Message{Date: 0} 41 42 date := time.Unix(0, 0) 43 if message.Time() != date { 44 t.Fail() 45 } 46} 47 48func TestMessageIsCommandWithCommand(t *testing.T) { 49 message := tgbotapi.Message{Text: "/command"} 50 message.Entities = &[]tgbotapi.MessageEntity{{Type: "bot_command", Offset: 0, Length: 8}} 51 52 if message.IsCommand() != true { 53 t.Fail() 54 } 55} 56 57func TestIsCommandWithText(t *testing.T) { 58 message := tgbotapi.Message{Text: "some text"} 59 60 if message.IsCommand() != false { 61 t.Fail() 62 } 63} 64 65func TestIsCommandWithEmptyText(t *testing.T) { 66 message := tgbotapi.Message{Text: ""} 67 68 if message.IsCommand() != false { 69 t.Fail() 70 } 71} 72 73func TestCommandWithCommand(t *testing.T) { 74 message := tgbotapi.Message{Text: "/command"} 75 message.Entities = &[]tgbotapi.MessageEntity{{Type: "bot_command", Offset: 0, Length: 8}} 76 77 if message.Command() != "command" { 78 t.Fail() 79 } 80} 81 82func TestCommandWithEmptyText(t *testing.T) { 83 message := tgbotapi.Message{Text: ""} 84 85 if message.Command() != "" { 86 t.Fail() 87 } 88} 89 90func TestCommandWithNonCommand(t *testing.T) { 91 message := tgbotapi.Message{Text: "test text"} 92 93 if message.Command() != "" { 94 t.Fail() 95 } 96} 97 98func TestCommandWithBotName(t *testing.T) { 99 message := tgbotapi.Message{Text: "/command@testbot"} 100 message.Entities = &[]tgbotapi.MessageEntity{{Type: "bot_command", Offset: 0, Length: 16}} 101 102 if message.Command() != "command" { 103 t.Fail() 104 } 105} 106 107func TestCommandWithAtWithBotName(t *testing.T) { 108 message := tgbotapi.Message{Text: "/command@testbot"} 109 message.Entities = &[]tgbotapi.MessageEntity{{Type: "bot_command", Offset: 0, Length: 16}} 110 111 if message.CommandWithAt() != "command@testbot" { 112 t.Fail() 113 } 114} 115 116func TestMessageCommandArgumentsWithArguments(t *testing.T) { 117 message := tgbotapi.Message{Text: "/command with arguments"} 118 message.Entities = &[]tgbotapi.MessageEntity{{Type: "bot_command", Offset: 0, Length: 8}} 119 if message.CommandArguments() != "with arguments" { 120 t.Fail() 121 } 122} 123 124func TestMessageCommandArgumentsWithMalformedArguments(t *testing.T) { 125 message := tgbotapi.Message{Text: "/command-without argument space"} 126 message.Entities = &[]tgbotapi.MessageEntity{{Type: "bot_command", Offset: 0, Length: 8}} 127 if message.CommandArguments() != "without argument space" { 128 t.Fail() 129 } 130} 131 132func TestMessageCommandArgumentsWithoutArguments(t *testing.T) { 133 message := tgbotapi.Message{Text: "/command"} 134 if message.CommandArguments() != "" { 135 t.Fail() 136 } 137} 138 139func TestMessageCommandArgumentsForNonCommand(t *testing.T) { 140 message := tgbotapi.Message{Text: "test text"} 141 if message.CommandArguments() != "" { 142 t.Fail() 143 } 144} 145 146func TestMessageEntityParseURLGood(t *testing.T) { 147 entity := tgbotapi.MessageEntity{URL: "https://www.google.com"} 148 149 if _, err := entity.ParseURL(); err != nil { 150 t.Fail() 151 } 152} 153 154func TestMessageEntityParseURLBad(t *testing.T) { 155 entity := tgbotapi.MessageEntity{URL: ""} 156 157 if _, err := entity.ParseURL(); err == nil { 158 t.Fail() 159 } 160} 161 162func TestChatIsPrivate(t *testing.T) { 163 chat := tgbotapi.Chat{ID: 10, Type: "private"} 164 165 if chat.IsPrivate() != true { 166 t.Fail() 167 } 168} 169 170func TestChatIsGroup(t *testing.T) { 171 chat := tgbotapi.Chat{ID: 10, Type: "group"} 172 173 if chat.IsGroup() != true { 174 t.Fail() 175 } 176} 177 178func TestChatIsChannel(t *testing.T) { 179 chat := tgbotapi.Chat{ID: 10, Type: "channel"} 180 181 if chat.IsChannel() != true { 182 t.Fail() 183 } 184} 185 186func TestChatIsSuperGroup(t *testing.T) { 187 chat := tgbotapi.Chat{ID: 10, Type: "supergroup"} 188 189 if !chat.IsSuperGroup() { 190 t.Fail() 191 } 192} 193 194func TestFileLink(t *testing.T) { 195 file := tgbotapi.File{FilePath: "test/test.txt"} 196 197 if file.Link("token") != "https://api.telegram.org/file/bottoken/test/test.txt" { 198 t.Fail() 199 } 200} 201