Skip to content

Commit 4aae581

Browse files
committed
Added tests for closed issue and pullrequest comment.
1 parent 94c04a9 commit 4aae581

File tree

10 files changed

+162
-10
lines changed

10 files changed

+162
-10
lines changed

services/webhook/dingtalk.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ func (d *DingtalkPayload) Issue(p *api.IssuePayload) (api.Payloader, error) {
147147
return &DingtalkPayload{
148148
MsgType: "actionCard",
149149
ActionCard: dingtalk.ActionCard{
150-
Text: text + "\r\n\r\n" + attachmentText,
150+
Text: strings.TrimSpace(text + "\r\n\r\n" + attachmentText),
151151
//Markdown: "# " + title + "\n" + text,
152152
Title: issueTitle,
153153
HideAvatar: "0",

services/webhook/dingtalk_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,17 @@ func TestDingTalkPayload(t *testing.T) {
8989
assert.Equal(t, "#2 crash", pl.(*DingtalkPayload).ActionCard.Title)
9090
assert.Equal(t, "view issue", pl.(*DingtalkPayload).ActionCard.SingleTitle)
9191
assert.Equal(t, "http://localhost:3000/test/repo/issues/2", pl.(*DingtalkPayload).ActionCard.SingleURL)
92+
93+
p.Action = api.HookIssueClosed
94+
pl, err = d.Issue(p)
95+
require.NoError(t, err)
96+
require.NotNil(t, pl)
97+
require.IsType(t, &DingtalkPayload{}, pl)
98+
99+
assert.Equal(t, "[test/repo] Issue closed: #2 crash by user1", pl.(*DingtalkPayload).ActionCard.Text)
100+
assert.Equal(t, "#2 crash", pl.(*DingtalkPayload).ActionCard.Title)
101+
assert.Equal(t, "view issue", pl.(*DingtalkPayload).ActionCard.SingleTitle)
102+
assert.Equal(t, "http://localhost:3000/test/repo/issues/2", pl.(*DingtalkPayload).ActionCard.SingleURL)
92103
})
93104

94105
t.Run("IssueComment", func(t *testing.T) {
@@ -121,6 +132,21 @@ func TestDingTalkPayload(t *testing.T) {
121132
assert.Equal(t, "http://localhost:3000/test/repo/pulls/12", pl.(*DingtalkPayload).ActionCard.SingleURL)
122133
})
123134

135+
t.Run("PullRequestComment", func(t *testing.T) {
136+
p := pullRequestCommentTestPayload()
137+
138+
d := new(DingtalkPayload)
139+
pl, err := d.IssueComment(p)
140+
require.NoError(t, err)
141+
require.NotNil(t, pl)
142+
require.IsType(t, &DingtalkPayload{}, pl)
143+
144+
assert.Equal(t, "[test/repo] New comment on pull request #12 Fix bug by user1\r\n\r\nchanges requested", pl.(*DingtalkPayload).ActionCard.Text)
145+
assert.Equal(t, "#12 Fix bug", pl.(*DingtalkPayload).ActionCard.Title)
146+
assert.Equal(t, "view issue comment", pl.(*DingtalkPayload).ActionCard.SingleTitle)
147+
assert.Equal(t, "http://localhost:3000/test/repo/pulls/12#issuecomment-4", pl.(*DingtalkPayload).ActionCard.SingleURL)
148+
})
149+
124150
t.Run("Review", func(t *testing.T) {
125151
p := pullRequestTestPayload()
126152
p.Action = api.HookIssueReviewed

services/webhook/discord_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,20 @@ func TestDiscordPayload(t *testing.T) {
105105
assert.Equal(t, p.Sender.UserName, pl.(*DiscordPayload).Embeds[0].Author.Name)
106106
assert.Equal(t, setting.AppURL+p.Sender.UserName, pl.(*DiscordPayload).Embeds[0].Author.URL)
107107
assert.Equal(t, p.Sender.AvatarURL, pl.(*DiscordPayload).Embeds[0].Author.IconURL)
108+
109+
p.Action = api.HookIssueClosed
110+
pl, err = d.Issue(p)
111+
require.NoError(t, err)
112+
require.NotNil(t, pl)
113+
require.IsType(t, &DiscordPayload{}, pl)
114+
115+
assert.Len(t, pl.(*DiscordPayload).Embeds, 1)
116+
assert.Equal(t, "[test/repo] Issue closed: #2 crash", pl.(*DiscordPayload).Embeds[0].Title)
117+
assert.Empty(t, pl.(*DiscordPayload).Embeds[0].Description)
118+
assert.Equal(t, "http://localhost:3000/test/repo/issues/2", pl.(*DiscordPayload).Embeds[0].URL)
119+
assert.Equal(t, p.Sender.UserName, pl.(*DiscordPayload).Embeds[0].Author.Name)
120+
assert.Equal(t, setting.AppURL+p.Sender.UserName, pl.(*DiscordPayload).Embeds[0].Author.URL)
121+
assert.Equal(t, p.Sender.AvatarURL, pl.(*DiscordPayload).Embeds[0].Author.IconURL)
108122
})
109123

110124
t.Run("IssueComment", func(t *testing.T) {
@@ -143,6 +157,24 @@ func TestDiscordPayload(t *testing.T) {
143157
assert.Equal(t, p.Sender.AvatarURL, pl.(*DiscordPayload).Embeds[0].Author.IconURL)
144158
})
145159

160+
t.Run("PullRequestComment", func(t *testing.T) {
161+
p := pullRequestCommentTestPayload()
162+
163+
d := new(DiscordPayload)
164+
pl, err := d.IssueComment(p)
165+
require.NoError(t, err)
166+
require.NotNil(t, pl)
167+
require.IsType(t, &DiscordPayload{}, pl)
168+
169+
assert.Len(t, pl.(*DiscordPayload).Embeds, 1)
170+
assert.Equal(t, "[test/repo] New comment on pull request #12 Fix bug", pl.(*DiscordPayload).Embeds[0].Title)
171+
assert.Equal(t, "changes requested", pl.(*DiscordPayload).Embeds[0].Description)
172+
assert.Equal(t, "http://localhost:3000/test/repo/pulls/12#issuecomment-4", pl.(*DiscordPayload).Embeds[0].URL)
173+
assert.Equal(t, p.Sender.UserName, pl.(*DiscordPayload).Embeds[0].Author.Name)
174+
assert.Equal(t, setting.AppURL+p.Sender.UserName, pl.(*DiscordPayload).Embeds[0].Author.URL)
175+
assert.Equal(t, p.Sender.AvatarURL, pl.(*DiscordPayload).Embeds[0].Author.IconURL)
176+
})
177+
146178
t.Run("Review", func(t *testing.T) {
147179
p := pullRequestTestPayload()
148180
p.Action = api.HookIssueReviewed

services/webhook/feishu.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func newFeishuTextPayload(text string) *FeishuPayload {
3030
Content: struct {
3131
Text string `json:"text"`
3232
}{
33-
Text: text,
33+
Text: strings.TrimSpace(text),
3434
},
3535
}
3636
}

services/webhook/feishu_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,14 @@ func TestFeishuPayload(t *testing.T) {
7474
require.IsType(t, &FeishuPayload{}, pl)
7575

7676
assert.Equal(t, "#2 crash\r\n[test/repo] Issue opened: #2 crash by user1\r\n\r\nissue body", pl.(*FeishuPayload).Content.Text)
77+
78+
p.Action = api.HookIssueClosed
79+
pl, err = d.Issue(p)
80+
require.NoError(t, err)
81+
require.NotNil(t, pl)
82+
require.IsType(t, &FeishuPayload{}, pl)
83+
84+
assert.Equal(t, "#2 crash\r\n[test/repo] Issue closed: #2 crash by user1", pl.(*FeishuPayload).Content.Text)
7785
})
7886

7987
t.Run("IssueComment", func(t *testing.T) {
@@ -100,6 +108,18 @@ func TestFeishuPayload(t *testing.T) {
100108
assert.Equal(t, "#12 Fix bug\r\n[test/repo] Pull request opened: #12 Fix bug by user1\r\n\r\nfixes bug #2", pl.(*FeishuPayload).Content.Text)
101109
})
102110

111+
t.Run("PullRequestComment", func(t *testing.T) {
112+
p := pullRequestCommentTestPayload()
113+
114+
d := new(FeishuPayload)
115+
pl, err := d.IssueComment(p)
116+
require.NoError(t, err)
117+
require.NotNil(t, pl)
118+
require.IsType(t, &FeishuPayload{}, pl)
119+
120+
assert.Equal(t, "#12 Fix bug\r\n[test/repo] New comment on pull request #12 Fix bug by user1\r\n\r\nchanges requested", pl.(*FeishuPayload).Content.Text)
121+
})
122+
103123
t.Run("Review", func(t *testing.T) {
104124
p := pullRequestTestPayload()
105125
p.Action = api.HookIssueReviewed

services/webhook/general_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -164,15 +164,15 @@ func pullRequestCommentTestPayload() *api.IssueCommentPayload {
164164
FullName: "test/repo",
165165
},
166166
Comment: &api.Comment{
167-
HTMLURL: "http://localhost:3000/test/repo/pulls/2#issuecomment-4",
168-
PRURL: "http://localhost:3000/test/repo/pulls/2",
167+
HTMLURL: "http://localhost:3000/test/repo/pulls/12#issuecomment-4",
168+
PRURL: "http://localhost:3000/test/repo/pulls/12",
169169
Body: "changes requested",
170170
},
171171
Issue: &api.Issue{
172-
ID: 2,
173-
Index: 2,
174-
URL: "http://localhost:3000/api/v1/repos/test/repo/issues/2",
175-
HTMLURL: "http://localhost:3000/test/repo/issues/2",
172+
ID: 12,
173+
Index: 12,
174+
URL: "http://localhost:3000/api/v1/repos/test/repo/pulls/12",
175+
HTMLURL: "http://localhost:3000/test/repo/pulls/12",
176176
Title: "Fix bug",
177177
Body: "fixes bug #2",
178178
},

services/webhook/msteams_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,31 @@ func TestMSTeamsPayload(t *testing.T) {
159159
assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1)
160160
assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1)
161161
assert.Equal(t, "http://localhost:3000/test/repo/issues/2", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI)
162+
163+
p.Action = api.HookIssueClosed
164+
pl, err = d.Issue(p)
165+
require.NoError(t, err)
166+
require.NotNil(t, pl)
167+
require.IsType(t, &MSTeamsPayload{}, pl)
168+
169+
assert.Equal(t, "[test/repo] Issue closed: #2 crash", pl.(*MSTeamsPayload).Title)
170+
assert.Equal(t, "[test/repo] Issue closed: #2 crash", pl.(*MSTeamsPayload).Summary)
171+
assert.Len(t, pl.(*MSTeamsPayload).Sections, 1)
172+
assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle)
173+
assert.Empty(t, pl.(*MSTeamsPayload).Sections[0].Text)
174+
assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2)
175+
for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts {
176+
if fact.Name == "Repository:" {
177+
assert.Equal(t, p.Repository.FullName, fact.Value)
178+
} else if fact.Name == "Issue #:" {
179+
assert.Equal(t, "2", fact.Value)
180+
} else {
181+
t.Fail()
182+
}
183+
}
184+
assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1)
185+
assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1)
186+
assert.Equal(t, "http://localhost:3000/test/repo/issues/2", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI)
162187
})
163188

164189
t.Run("IssueComment", func(t *testing.T) {
@@ -219,6 +244,35 @@ func TestMSTeamsPayload(t *testing.T) {
219244
assert.Equal(t, "http://localhost:3000/test/repo/pulls/12", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI)
220245
})
221246

247+
t.Run("PullRequestComment", func(t *testing.T) {
248+
p := pullRequestCommentTestPayload()
249+
250+
d := new(MSTeamsPayload)
251+
pl, err := d.IssueComment(p)
252+
require.NoError(t, err)
253+
require.NotNil(t, pl)
254+
require.IsType(t, &MSTeamsPayload{}, pl)
255+
256+
assert.Equal(t, "[test/repo] New comment on pull request #12 Fix bug", pl.(*MSTeamsPayload).Title)
257+
assert.Equal(t, "[test/repo] New comment on pull request #12 Fix bug", pl.(*MSTeamsPayload).Summary)
258+
assert.Len(t, pl.(*MSTeamsPayload).Sections, 1)
259+
assert.Equal(t, "user1", pl.(*MSTeamsPayload).Sections[0].ActivitySubtitle)
260+
assert.Equal(t, "changes requested", pl.(*MSTeamsPayload).Sections[0].Text)
261+
assert.Len(t, pl.(*MSTeamsPayload).Sections[0].Facts, 2)
262+
for _, fact := range pl.(*MSTeamsPayload).Sections[0].Facts {
263+
if fact.Name == "Repository:" {
264+
assert.Equal(t, p.Repository.FullName, fact.Value)
265+
} else if fact.Name == "Issue #:" {
266+
assert.Equal(t, "12", fact.Value)
267+
} else {
268+
t.Fail()
269+
}
270+
}
271+
assert.Len(t, pl.(*MSTeamsPayload).PotentialAction, 1)
272+
assert.Len(t, pl.(*MSTeamsPayload).PotentialAction[0].Targets, 1)
273+
assert.Equal(t, "http://localhost:3000/test/repo/pulls/12#issuecomment-4", pl.(*MSTeamsPayload).PotentialAction[0].Targets[0].URI)
274+
})
275+
222276
t.Run("Review", func(t *testing.T) {
223277
p := pullRequestTestPayload()
224278
p.Action = api.HookIssueReviewed

services/webhook/slack_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func TestSlackPullRequestCommentPayload(t *testing.T) {
5252
require.NoError(t, err)
5353
require.NotNil(t, pl)
5454

55-
assert.Equal(t, "[<http://localhost:3000/test/repo|test/repo>] New comment on pull request <http://localhost:3000/test/repo/pulls/2|#2 Fix bug> by <https://try.gitea.io/user1|user1>", pl.(*SlackPayload).Text)
55+
assert.Equal(t, "[<http://localhost:3000/test/repo|test/repo>] New comment on pull request <http://localhost:3000/test/repo/pulls/12|#12 Fix bug> by <https://try.gitea.io/user1|user1>", pl.(*SlackPayload).Text)
5656
}
5757

5858
func TestSlackReleasePayload(t *testing.T) {

services/webhook/telegram.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ func (t *TelegramPayload) Issue(p *api.IssuePayload) (api.Payloader, error) {
139139
text, _, attachmentText, _ := getIssuesPayloadInfo(p, htmlLinkFormatter, true)
140140

141141
return &TelegramPayload{
142-
Message: text + "\n\n" + attachmentText,
142+
Message: strings.TrimSpace(text + "\n\n" + attachmentText),
143143
}, nil
144144
}
145145

services/webhook/telegram_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,14 @@ func TestTelegramPayload(t *testing.T) {
7474
require.IsType(t, &TelegramPayload{}, pl)
7575

7676
assert.Equal(t, "[<a href=\"http://localhost:3000/test/repo\">test/repo</a>] Issue opened: <a href=\"http://localhost:3000/test/repo/issues/2\">#2 crash</a> by <a href=\"https://try.gitea.io/user1\">user1</a>\n\nissue body", pl.(*TelegramPayload).Message)
77+
78+
p.Action = api.HookIssueClosed
79+
pl, err = d.Issue(p)
80+
require.NoError(t, err)
81+
require.NotNil(t, pl)
82+
require.IsType(t, &TelegramPayload{}, pl)
83+
84+
assert.Equal(t, `[<a href="http://localhost:3000/test/repo">test/repo</a>] Issue closed: <a href="http://localhost:3000/test/repo/issues/2">#2 crash</a> by <a href="https://try.gitea.io/user1">user1</a>`, pl.(*TelegramPayload).Message)
7785
})
7886

7987
t.Run("IssueComment", func(t *testing.T) {
@@ -100,6 +108,18 @@ func TestTelegramPayload(t *testing.T) {
100108
assert.Equal(t, "[<a href=\"http://localhost:3000/test/repo\">test/repo</a>] Pull request opened: <a href=\"http://localhost:3000/test/repo/pulls/12\">#12 Fix bug</a> by <a href=\"https://try.gitea.io/user1\">user1</a>\nfixes bug #2", pl.(*TelegramPayload).Message)
101109
})
102110

111+
t.Run("PullRequestComment", func(t *testing.T) {
112+
p := pullRequestCommentTestPayload()
113+
114+
d := new(TelegramPayload)
115+
pl, err := d.IssueComment(p)
116+
require.NoError(t, err)
117+
require.NotNil(t, pl)
118+
require.IsType(t, &TelegramPayload{}, pl)
119+
120+
assert.Equal(t, "[<a href=\"http://localhost:3000/test/repo\">test/repo</a>] New comment on pull request <a href=\"http://localhost:3000/test/repo/pulls/12\">#12 Fix bug</a> by <a href=\"https://try.gitea.io/user1\">user1</a>\nchanges requested", pl.(*TelegramPayload).Message)
121+
})
122+
103123
t.Run("Review", func(t *testing.T) {
104124
p := pullRequestTestPayload()
105125
p.Action = api.HookIssueReviewed

0 commit comments

Comments
 (0)