-
Notifications
You must be signed in to change notification settings - Fork 1
/
format_internal_test.go
134 lines (127 loc) · 3.05 KB
/
format_internal_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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package slack // don't want to export, do want to test
import (
"testing"
"github.com/nlopes/slack"
"github.com/stretchr/testify/assert"
)
var formatTestCases = []struct {
In string
Out string
Should string
}{
{
In: "foo <@U1234> bar",
Out: "foo @bob bar",
Should: "decodes user links",
},
{
In: "foo <@U1234|label> bar",
Out: "foo @label bar",
Should: "decodes labels in user links",
},
{
In: "foo <#C1234> bar",
Out: "foo #general bar",
Should: "decodes channel links",
},
{
In: "foo <#C1234|label> bar",
Out: "foo #label bar",
Should: "decodes labels in channel links",
},
{
In: "foo <!everyone> bar",
Out: "foo @everyone bar",
Should: "decodes everyone links",
},
{
In: "foo <!channel> bar",
Out: "foo @channel bar",
Should: "decodes channel links",
},
{
In: "foo <!here> bar",
Out: "foo @here bar",
Should: "decodes here links",
},
{
In: "foo <!group> bar",
Out: "foo @group bar",
Should: "decodes group links",
},
{
In: "foo <!subteam^S123|@subteam> bar",
Out: "foo @subteam bar",
Should: "decodes team links",
},
{
In: "foo <!foobar|hello> bar",
Out: "foo hello bar",
Should: "decodes links",
},
{
In: "foo <!foobar> bar",
Out: "foo <!foobar> bar",
Should: "decodes leaves unlabelled links",
},
{
In: "foo <http://example.com> bar",
Out: "foo http://example.com bar",
Should: "decodes URLs",
},
{
In: "foo <http://example.com|example.com> bar",
Out: "foo example.com bar",
Should: "decodes URLs with labels",
},
{
In: "foo <skype:echo123?call> bar",
Out: "foo skype:echo123?call bar",
Should: "decodes skype links",
},
{
In: "foo <mailto:info@example.net> bar",
Out: "foo info@example.net bar",
Should: "decode emails",
},
{
In: "foo <mailto:info@example.net|info@example.net> bar",
Out: "foo info@example.net bar",
Should: "decode emails with labels",
},
{
In: "foo <@U1234|label> bar <#C1234> <!channel> <https://www.example.com|example.com>",
Out: "foo @label bar #general @channel example.com",
Should: "decode multiple links",
},
}
func TestFormatter(t *testing.T) {
assert := assert.New(t)
store := newTestStore()
store.Channel.ID = "C1234"
store.Channel.Name = "general"
store.User = slack.User{ID: "U1234", Name: "bob"}
store.IM.ID = "D1234"
store.IM.User = "U1234"
f := formatter{store}
for _, c := range formatTestCases {
assert.Equal(c.Out, f.Format(&slack.MessageEvent{Msg: slack.Msg{Text: c.In}}), c.Should)
}
store.User = slack.User{ID: "U1234", RealName: "bobby", Name: "bob"}
assert.Equal("foo @bobby bar", f.Format(&slack.MessageEvent{Msg: slack.Msg{Text: "foo <@U1234> bar"}}), "use real name")
}
func TestFormatter_fallback(t *testing.T) {
f := formatter{}
in := slack.Msg{
Text: "foo",
Attachments: []slack.Attachment{
{Fallback: "bar"},
{Fallback: "baz"},
},
}
assert.Equal(t,
f.Format(&slack.MessageEvent{Msg: in}),
"foo\nbar\nbaz",
"should flatten attachment fallback text",
)
}