-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhabrbestbot_test.go
114 lines (100 loc) · 2.21 KB
/
habrbestbot_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package habrbestbot
import (
"testing"
"github.com/baor/habr-best-bot/habr"
"github.com/stretchr/testify/assert"
)
func TestHabrBestBot_updateFeedToChannel_OneItem(t *testing.T) {
bot := telegramBotMocked{}
s := storageMocked{internalStorage: map[string]bool{}}
fr := feedReaderMocked{
items: []habr.FeedItem{
{
Message: "text",
ID: "id1",
},
},
}
ctx := botContext{
tlg: &bot,
tlgChannel: "@habrbest",
st: &s,
feed: fr,
}
ctx.updateFeedToChannel()
assert.Equal(t, 1, bot.newMessagesCount)
assert.True(t, s.internalStorage["id1"])
}
func TestHabrBestBot_updateFeedToChannel_TwoItems(t *testing.T) {
bot := telegramBotMocked{}
s := storageMocked{internalStorage: map[string]bool{}}
fr := feedReaderMocked{
items: []habr.FeedItem{
{
Message: "text",
ID: "id1",
},
{
Message: "text",
ID: "id2",
},
},
}
ctx := botContext{
tlg: &bot,
tlgChannel: "@habrbest",
st: &s,
feed: fr,
}
ctx.updateFeedToChannel()
assert.Equal(t, 2, bot.newMessagesCount)
assert.True(t, s.internalStorage["id1"])
assert.True(t, s.internalStorage["id2"])
}
func TestHabrBestBot_updateFeedToChannel_TwoSameItems(t *testing.T) {
bot := telegramBotMocked{}
s := storageMocked{internalStorage: map[string]bool{}}
fr := feedReaderMocked{
items: []habr.FeedItem{
{
Message: "text",
ID: "id1",
},
{
Message: "text",
ID: "id1",
},
},
}
ctx := botContext{
tlg: &bot,
tlgChannel: "@habrbest",
st: &s,
feed: fr,
}
ctx.updateFeedToChannel()
assert.Equal(t, 1, bot.newMessagesCount)
assert.True(t, s.internalStorage["id1"])
}
type telegramBotMocked struct {
newMessagesCount int
}
func (t *telegramBotMocked) NewMessageToChannel(username string, text string) error {
t.newMessagesCount++
return nil
}
type storageMocked struct {
internalStorage map[string]bool
}
func (s storageMocked) IsPostIDExists(id string) bool {
return s.internalStorage[id]
}
func (s storageMocked) AddPostID(id string) {
s.internalStorage[id] = true
}
type feedReaderMocked struct {
items []habr.FeedItem
}
func (fr feedReaderMocked) GetBestFeed() []habr.FeedItem {
return fr.items
}