Skip to content

Commit 641d00c

Browse files
committed
Improve test coverage
1 parent a1d451e commit 641d00c

File tree

2 files changed

+67
-8
lines changed

2 files changed

+67
-8
lines changed

troll_shield.go

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ type TrollShieldBot interface {
2020
GetChatMember(telegram.ChatConfigWithUser) (telegram.ChatMember, error)
2121
KickChatMember(telegram.KickChatMemberConfig) (telegram.APIResponse, error)
2222
Send(telegram.Chattable) (telegram.Message, error)
23+
LeaveChat(telegram.ChatConfig) (telegram.APIResponse, error)
24+
GetUpdatesChan(telegram.UpdateConfig) (telegram.UpdatesChannel, error)
2325
}
2426

2527
// blacklist groups, member from that groups will be kicked automatically
@@ -68,7 +70,7 @@ func getUserName(user telegram.User) string {
6870
return username
6971
}
7072

71-
func getUpdates(bot *telegram.BotAPI) telegram.UpdatesChannel {
73+
func getUpdates(bot TrollShieldBot) telegram.UpdatesChannel {
7274
u := telegram.NewUpdate(0)
7375
u.Timeout = 60
7476
updates, err := bot.GetUpdatesChan(u)
@@ -194,14 +196,14 @@ func setupBot(envVar string) (*telegram.BotAPI, error) {
194196
return bot, nil
195197
}
196198

197-
func setupBots() (*telegram.BotAPI, *telegram.BotAPI) {
199+
func setupBots() (*telegram.BotAPI, *telegram.BotAPI, error) {
198200
var bot, botHidden *telegram.BotAPI
199201
var err error
200202

201203
log.Println("Setup the main bot")
202204
bot, err = setupBot("TELEGRAM_BOT_TOKEN")
203205
if err != nil {
204-
log.Fatalf("Bot setup failed: %v", err)
206+
return nil, nil, err
205207
}
206208

207209
log.Println("Setup the hidden bot")
@@ -211,22 +213,25 @@ func setupBots() (*telegram.BotAPI, *telegram.BotAPI) {
211213
botHidden = bot
212214
}
213215

214-
return bot, botHidden
216+
return bot, botHidden, nil
215217
}
216218

217-
func leaveChat(bot *telegram.BotAPI, update *telegram.Update, trollGroup string) {
219+
func leaveChat(bot TrollShieldBot, update *telegram.Update, trollGroup string) {
218220
reply(bot, update, "Nesse grupo há trolls. Dou-me a liberdade de ir embora. Adeus.")
219221
r, err := bot.LeaveChat(telegram.ChatConfig{ChatID: update.Message.Chat.ID})
220222
if !r.Ok || err != nil {
221-
log.Printf("%v tried to exit from %v, but failed with: %v",
222-
bot.Self.UserName, trollGroup, err,
223+
log.Printf("Bot tried to exit from %v, but failed with: %v",
224+
trollGroup, err,
223225
)
224226
}
225227
}
226228

227229
func main() {
228230
setupLogging()
229-
bot, botHidden := setupBots()
231+
bot, botHidden, err := setupBots()
232+
if err != nil {
233+
log.Fatal(err.Error())
234+
}
230235

231236
for update := range getUpdates(bot) {
232237
if messageEvent(&update) {

troll_shield_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"errors"
5+
"os"
56
"testing"
67

78
telegram "github.com/go-telegram-bot-api/telegram-bot-api"
@@ -32,6 +33,19 @@ func (bot *BotMockup) Send(c telegram.Chattable) (telegram.Message, error) {
3233
return telegram.Message{}, nil
3334
}
3435

36+
func (bot *BotMockup) LeaveChat(c telegram.ChatConfig) (telegram.APIResponse, error) {
37+
switch c.ChatID {
38+
case 1:
39+
return telegram.APIResponse{Ok: true}, nil
40+
default:
41+
return telegram.APIResponse{Ok: false}, errors.New("user not found")
42+
}
43+
}
44+
45+
func (bot *BotMockup) GetUpdatesChan(c telegram.UpdateConfig) (telegram.UpdatesChannel, error) {
46+
return make(chan telegram.Update, 1), nil
47+
}
48+
3549
func TestGetUserName(t *testing.T) {
3650
user1 := telegram.User{
3751
FirstName: "Rolisvaldo",
@@ -135,3 +149,43 @@ func TestWelcomeMessage(t *testing.T) {
135149
user := telegram.User{}
136150
welcomeMessage(&botnilson, &update, user)
137151
}
152+
153+
func TestSetupBot(t *testing.T) {
154+
envVar := "TELEGRAM_BOT_TOKEN"
155+
if err := os.Setenv(envVar, "123"); err != nil {
156+
t.Errorf("Setup env var TELEGRAM_BOT_TOKEN error: %v", err)
157+
}
158+
159+
if _, err := setupBot(envVar); err == nil {
160+
t.Errorf("Invalid token should go fail, got nil error")
161+
}
162+
163+
if _, err := setupBot("???"); err == nil {
164+
t.Errorf("Non-defined env var should go fail, got nil error.")
165+
}
166+
}
167+
168+
func TestSetupBots(t *testing.T) {
169+
if _, _, err := setupBots(); err == nil {
170+
t.Errorf("setupBots fail with invalid tokens.")
171+
}
172+
}
173+
174+
func TestSetupLogging(t *testing.T) {
175+
setupLogging()
176+
}
177+
178+
func TestLeaveChat(t *testing.T) {
179+
bot := BotMockup{}
180+
update := telegram.Update{}
181+
message := telegram.Message{}
182+
chat := telegram.Chat{}
183+
message.Chat = &chat
184+
update.Message = &message
185+
leaveChat(&bot, &update, "trolleira")
186+
}
187+
188+
func TestGetUpdates(t *testing.T) {
189+
bot := BotMockup{}
190+
getUpdates(&bot)
191+
}

0 commit comments

Comments
 (0)