all repos — telegram-bot-api @ 5aaa0b2d03cc570c5c04e52021b509822c980c3f

Golang bindings for the Telegram Bot API

types_test.go (view raw)

  1package tgbotapi
  2
  3import (
  4	"testing"
  5	"time"
  6)
  7
  8func TestUserStringWith(t *testing.T) {
  9	user := User{
 10		ID:           0,
 11		FirstName:    "Test",
 12		LastName:     "Test",
 13		UserName:     "",
 14		LanguageCode: "en",
 15		IsBot:        false,
 16	}
 17
 18	if user.String() != "Test Test" {
 19		t.Fail()
 20	}
 21}
 22
 23func TestUserStringWithUserName(t *testing.T) {
 24	user := User{
 25		ID:           0,
 26		FirstName:    "Test",
 27		LastName:     "Test",
 28		UserName:     "@test",
 29		LanguageCode: "en",
 30	}
 31
 32	if user.String() != "@test" {
 33		t.Fail()
 34	}
 35}
 36
 37func TestMessageTime(t *testing.T) {
 38	message := Message{Date: 0}
 39
 40	date := time.Unix(0, 0)
 41	if message.Time() != date {
 42		t.Fail()
 43	}
 44}
 45
 46func TestMessageIsCommandWithCommand(t *testing.T) {
 47	message := Message{Text: "/command"}
 48	message.Entities = []MessageEntity{{Type: "bot_command", Offset: 0, Length: 8}}
 49
 50	if !message.IsCommand() {
 51		t.Fail()
 52	}
 53}
 54
 55func TestIsCommandWithText(t *testing.T) {
 56	message := Message{Text: "some text"}
 57
 58	if message.IsCommand() {
 59		t.Fail()
 60	}
 61}
 62
 63func TestIsCommandWithEmptyText(t *testing.T) {
 64	message := Message{Text: ""}
 65
 66	if message.IsCommand() {
 67		t.Fail()
 68	}
 69}
 70
 71func TestCommandWithCommand(t *testing.T) {
 72	message := Message{Text: "/command"}
 73	message.Entities = []MessageEntity{{Type: "bot_command", Offset: 0, Length: 8}}
 74
 75	if message.Command() != "command" {
 76		t.Fail()
 77	}
 78}
 79
 80func TestCommandWithEmptyText(t *testing.T) {
 81	message := Message{Text: ""}
 82
 83	if message.Command() != "" {
 84		t.Fail()
 85	}
 86}
 87
 88func TestCommandWithNonCommand(t *testing.T) {
 89	message := Message{Text: "test text"}
 90
 91	if message.Command() != "" {
 92		t.Fail()
 93	}
 94}
 95
 96func TestCommandWithBotName(t *testing.T) {
 97	message := Message{Text: "/command@testbot"}
 98	message.Entities = []MessageEntity{{Type: "bot_command", Offset: 0, Length: 16}}
 99
100	if message.Command() != "command" {
101		t.Fail()
102	}
103}
104
105func TestCommandWithAtWithBotName(t *testing.T) {
106	message := Message{Text: "/command@testbot"}
107	message.Entities = []MessageEntity{{Type: "bot_command", Offset: 0, Length: 16}}
108
109	if message.CommandWithAt() != "command@testbot" {
110		t.Fail()
111	}
112}
113
114func TestMessageCommandArgumentsWithArguments(t *testing.T) {
115	message := Message{Text: "/command with arguments"}
116	message.Entities = []MessageEntity{{Type: "bot_command", Offset: 0, Length: 8}}
117	if message.CommandArguments() != "with arguments" {
118		t.Fail()
119	}
120}
121
122func TestMessageCommandArgumentsWithMalformedArguments(t *testing.T) {
123	message := Message{Text: "/command-without argument space"}
124	message.Entities = []MessageEntity{{Type: "bot_command", Offset: 0, Length: 8}}
125	if message.CommandArguments() != "without argument space" {
126		t.Fail()
127	}
128}
129
130func TestMessageCommandArgumentsWithoutArguments(t *testing.T) {
131	message := Message{Text: "/command"}
132	if message.CommandArguments() != "" {
133		t.Fail()
134	}
135}
136
137func TestMessageCommandArgumentsForNonCommand(t *testing.T) {
138	message := Message{Text: "test text"}
139	if message.CommandArguments() != "" {
140		t.Fail()
141	}
142}
143
144func TestMessageEntityParseURLGood(t *testing.T) {
145	entity := MessageEntity{URL: "https://www.google.com"}
146
147	if _, err := entity.ParseURL(); err != nil {
148		t.Fail()
149	}
150}
151
152func TestMessageEntityParseURLBad(t *testing.T) {
153	entity := MessageEntity{URL: ""}
154
155	if _, err := entity.ParseURL(); err == nil {
156		t.Fail()
157	}
158}
159
160func TestChatIsPrivate(t *testing.T) {
161	chat := Chat{ID: 10, Type: "private"}
162
163	if !chat.IsPrivate() {
164		t.Fail()
165	}
166}
167
168func TestChatIsGroup(t *testing.T) {
169	chat := Chat{ID: 10, Type: "group"}
170
171	if !chat.IsGroup() {
172		t.Fail()
173	}
174}
175
176func TestChatIsChannel(t *testing.T) {
177	chat := Chat{ID: 10, Type: "channel"}
178
179	if !chat.IsChannel() {
180		t.Fail()
181	}
182}
183
184func TestChatIsSuperGroup(t *testing.T) {
185	chat := Chat{ID: 10, Type: "supergroup"}
186
187	if !chat.IsSuperGroup() {
188		t.Fail()
189	}
190}
191
192func TestFileLink(t *testing.T) {
193	file := File{FilePath: "test/test.txt"}
194
195	if file.Link("token") != "https://api.telegram.org/file/bottoken/test/test.txt" {
196		t.Fail()
197	}
198}
199
200// Ensure all configs are sendable
201var (
202	_ Chattable = AnimationConfig{}
203	_ Chattable = AudioConfig{}
204	_ Chattable = CallbackConfig{}
205	_ Chattable = ChatAdministratorsConfig{}
206	_ Chattable = ChatActionConfig{}
207	_ Chattable = ChatInfoConfig{}
208	_ Chattable = ChatInviteLinkConfig{}
209	_ Chattable = ContactConfig{}
210	_ Chattable = DeleteChatPhotoConfig{}
211	_ Chattable = DeleteChatStickerSetConfig{}
212	_ Chattable = DeleteMessageConfig{}
213	_ Chattable = DocumentConfig{}
214	_ Chattable = EditMessageCaptionConfig{}
215	_ Chattable = EditMessageLiveLocationConfig{}
216	_ Chattable = EditMessageMediaConfig{}
217	_ Chattable = EditMessageReplyMarkupConfig{}
218	_ Chattable = EditMessageTextConfig{}
219	_ Chattable = FileConfig{}
220	_ Chattable = ForwardConfig{}
221	_ Chattable = GameConfig{}
222	_ Chattable = GetChatMemberConfig{}
223	_ Chattable = GetGameHighScoresConfig{}
224	_ Chattable = InlineConfig{}
225	_ Chattable = InvoiceConfig{}
226	_ Chattable = KickChatMemberConfig{}
227	_ Chattable = LeaveChatConfig{}
228	_ Chattable = LocationConfig{}
229	_ Chattable = MediaGroupConfig{}
230	_ Chattable = MessageConfig{}
231	_ Chattable = PhotoConfig{}
232	_ Chattable = PinChatMessageConfig{}
233	_ Chattable = PromoteChatMemberConfig{}
234	_ Chattable = RemoveWebhookConfig{}
235	_ Chattable = RestrictChatMemberConfig{}
236	_ Chattable = SendPollConfig{}
237	_ Chattable = SetChatDescriptionConfig{}
238	_ Chattable = SetChatPhotoConfig{}
239	_ Chattable = SetChatTitleConfig{}
240	_ Chattable = SetGameScoreConfig{}
241	_ Chattable = StickerConfig{}
242	_ Chattable = StopPollConfig{}
243	_ Chattable = StopMessageLiveLocationConfig{}
244	_ Chattable = UnbanChatMemberConfig{}
245	_ Chattable = UnpinChatMessageConfig{}
246	_ Chattable = UpdateConfig{}
247	_ Chattable = UserProfilePhotosConfig{}
248	_ Chattable = VenueConfig{}
249	_ Chattable = VideoConfig{}
250	_ Chattable = VideoNoteConfig{}
251	_ Chattable = VoiceConfig{}
252	_ Chattable = WebhookConfig{}
253)