Skip to content

Commit 94c04a9

Browse files
committed
Added tests for Discord.
1 parent 803d9c1 commit 94c04a9

File tree

3 files changed

+256
-180
lines changed

3 files changed

+256
-180
lines changed

services/webhook/discord.go

Lines changed: 33 additions & 169 deletions
Original file line numberDiff line numberDiff line change
@@ -120,22 +120,7 @@ func (d *DiscordPayload) Create(p *api.CreatePayload) (api.Payloader, error) {
120120
refName := git.RefEndName(p.Ref)
121121
title := fmt.Sprintf("[%s] %s %s created", p.Repo.FullName, p.RefType, refName)
122122

123-
return &DiscordPayload{
124-
Username: d.Username,
125-
AvatarURL: d.AvatarURL,
126-
Embeds: []DiscordEmbed{
127-
{
128-
Title: title,
129-
URL: p.Repo.HTMLURL + "/src/" + refName,
130-
Color: greenColor,
131-
Author: DiscordEmbedAuthor{
132-
Name: p.Sender.UserName,
133-
URL: setting.AppURL + p.Sender.UserName,
134-
IconURL: p.Sender.AvatarURL,
135-
},
136-
},
137-
},
138-
}, nil
123+
return d.createPayload(p.Sender, title, "", p.Repo.HTMLURL+"/src/"+refName, greenColor), nil
139124
}
140125

141126
// Delete implements PayloadConvertor Delete method
@@ -144,44 +129,14 @@ func (d *DiscordPayload) Delete(p *api.DeletePayload) (api.Payloader, error) {
144129
refName := git.RefEndName(p.Ref)
145130
title := fmt.Sprintf("[%s] %s %s deleted", p.Repo.FullName, p.RefType, refName)
146131

147-
return &DiscordPayload{
148-
Username: d.Username,
149-
AvatarURL: d.AvatarURL,
150-
Embeds: []DiscordEmbed{
151-
{
152-
Title: title,
153-
URL: p.Repo.HTMLURL + "/src/" + refName,
154-
Color: redColor,
155-
Author: DiscordEmbedAuthor{
156-
Name: p.Sender.UserName,
157-
URL: setting.AppURL + p.Sender.UserName,
158-
IconURL: p.Sender.AvatarURL,
159-
},
160-
},
161-
},
162-
}, nil
132+
return d.createPayload(p.Sender, title, "", p.Repo.HTMLURL+"/src/"+refName, redColor), nil
163133
}
164134

165135
// Fork implements PayloadConvertor Fork method
166136
func (d *DiscordPayload) Fork(p *api.ForkPayload) (api.Payloader, error) {
167137
title := fmt.Sprintf("%s is forked to %s", p.Forkee.FullName, p.Repo.FullName)
168138

169-
return &DiscordPayload{
170-
Username: d.Username,
171-
AvatarURL: d.AvatarURL,
172-
Embeds: []DiscordEmbed{
173-
{
174-
Title: title,
175-
URL: p.Repo.HTMLURL,
176-
Color: greenColor,
177-
Author: DiscordEmbedAuthor{
178-
Name: p.Sender.UserName,
179-
URL: setting.AppURL + p.Sender.UserName,
180-
IconURL: p.Sender.AvatarURL,
181-
},
182-
},
183-
},
184-
}, nil
139+
return d.createPayload(p.Sender, title, "", p.Repo.HTMLURL, greenColor), nil
185140
}
186141

187142
// Push implements PayloadConvertor Push method
@@ -216,92 +171,28 @@ func (d *DiscordPayload) Push(p *api.PushPayload) (api.Payloader, error) {
216171
}
217172
}
218173

219-
return &DiscordPayload{
220-
Username: d.Username,
221-
AvatarURL: d.AvatarURL,
222-
Embeds: []DiscordEmbed{
223-
{
224-
Title: title,
225-
Description: text,
226-
URL: titleLink,
227-
Color: greenColor,
228-
Author: DiscordEmbedAuthor{
229-
Name: p.Sender.UserName,
230-
URL: setting.AppURL + p.Sender.UserName,
231-
IconURL: p.Sender.AvatarURL,
232-
},
233-
},
234-
},
235-
}, nil
174+
return d.createPayload(p.Sender, title, text, titleLink, greenColor), nil
236175
}
237176

238177
// Issue implements PayloadConvertor Issue method
239178
func (d *DiscordPayload) Issue(p *api.IssuePayload) (api.Payloader, error) {
240-
text, _, attachmentText, color := getIssuesPayloadInfo(p, noneLinkFormatter, false)
179+
title, _, text, color := getIssuesPayloadInfo(p, noneLinkFormatter, false)
241180

242-
return &DiscordPayload{
243-
Username: d.Username,
244-
AvatarURL: d.AvatarURL,
245-
Embeds: []DiscordEmbed{
246-
{
247-
Title: text,
248-
Description: attachmentText,
249-
URL: p.Issue.HTMLURL,
250-
Color: color,
251-
Author: DiscordEmbedAuthor{
252-
Name: p.Sender.UserName,
253-
URL: setting.AppURL + p.Sender.UserName,
254-
IconURL: p.Sender.AvatarURL,
255-
},
256-
},
257-
},
258-
}, nil
181+
return d.createPayload(p.Sender, title, text, p.Issue.HTMLURL, color), nil
259182
}
260183

261184
// IssueComment implements PayloadConvertor IssueComment method
262185
func (d *DiscordPayload) IssueComment(p *api.IssueCommentPayload) (api.Payloader, error) {
263-
text, _, color := getIssueCommentPayloadInfo(p, noneLinkFormatter, false)
186+
title, _, color := getIssueCommentPayloadInfo(p, noneLinkFormatter, false)
264187

265-
return &DiscordPayload{
266-
Username: d.Username,
267-
AvatarURL: d.AvatarURL,
268-
Embeds: []DiscordEmbed{
269-
{
270-
Title: text,
271-
Description: p.Comment.Body,
272-
URL: p.Comment.HTMLURL,
273-
Color: color,
274-
Author: DiscordEmbedAuthor{
275-
Name: p.Sender.UserName,
276-
URL: setting.AppURL + p.Sender.UserName,
277-
IconURL: p.Sender.AvatarURL,
278-
},
279-
},
280-
},
281-
}, nil
188+
return d.createPayload(p.Sender, title, p.Comment.Body, p.Comment.HTMLURL, color), nil
282189
}
283190

284191
// PullRequest implements PayloadConvertor PullRequest method
285192
func (d *DiscordPayload) PullRequest(p *api.PullRequestPayload) (api.Payloader, error) {
286-
text, _, attachmentText, color := getPullRequestPayloadInfo(p, noneLinkFormatter, false)
193+
title, _, text, color := getPullRequestPayloadInfo(p, noneLinkFormatter, false)
287194

288-
return &DiscordPayload{
289-
Username: d.Username,
290-
AvatarURL: d.AvatarURL,
291-
Embeds: []DiscordEmbed{
292-
{
293-
Title: text,
294-
Description: attachmentText,
295-
URL: p.PullRequest.HTMLURL,
296-
Color: color,
297-
Author: DiscordEmbedAuthor{
298-
Name: p.Sender.UserName,
299-
URL: setting.AppURL + p.Sender.UserName,
300-
IconURL: p.Sender.AvatarURL,
301-
},
302-
},
303-
},
304-
}, nil
195+
return d.createPayload(p.Sender, title, text, p.PullRequest.HTMLURL, color), nil
305196
}
306197

307198
// Review implements PayloadConvertor Review method
@@ -330,23 +221,7 @@ func (d *DiscordPayload) Review(p *api.PullRequestPayload, event models.HookEven
330221
}
331222
}
332223

333-
return &DiscordPayload{
334-
Username: d.Username,
335-
AvatarURL: d.AvatarURL,
336-
Embeds: []DiscordEmbed{
337-
{
338-
Title: title,
339-
Description: text,
340-
URL: p.PullRequest.HTMLURL,
341-
Color: color,
342-
Author: DiscordEmbedAuthor{
343-
Name: p.Sender.UserName,
344-
URL: setting.AppURL + p.Sender.UserName,
345-
IconURL: p.Sender.AvatarURL,
346-
},
347-
},
348-
},
349-
}, nil
224+
return d.createPayload(p.Sender, title, text, p.PullRequest.HTMLURL, color), nil
350225
}
351226

352227
// Repository implements PayloadConvertor Repository method
@@ -363,45 +238,14 @@ func (d *DiscordPayload) Repository(p *api.RepositoryPayload) (api.Payloader, er
363238
color = redColor
364239
}
365240

366-
return &DiscordPayload{
367-
Username: d.Username,
368-
AvatarURL: d.AvatarURL,
369-
Embeds: []DiscordEmbed{
370-
{
371-
Title: title,
372-
URL: url,
373-
Color: color,
374-
Author: DiscordEmbedAuthor{
375-
Name: p.Sender.UserName,
376-
URL: setting.AppURL + p.Sender.UserName,
377-
IconURL: p.Sender.AvatarURL,
378-
},
379-
},
380-
},
381-
}, nil
241+
return d.createPayload(p.Sender, title, "", url, color), nil
382242
}
383243

384244
// Release implements PayloadConvertor Release method
385245
func (d *DiscordPayload) Release(p *api.ReleasePayload) (api.Payloader, error) {
386246
text, color := getReleasePayloadInfo(p, noneLinkFormatter, false)
387247

388-
return &DiscordPayload{
389-
Username: d.Username,
390-
AvatarURL: d.AvatarURL,
391-
Embeds: []DiscordEmbed{
392-
{
393-
Title: text,
394-
Description: p.Release.Note,
395-
URL: p.Release.URL,
396-
Color: color,
397-
Author: DiscordEmbedAuthor{
398-
Name: p.Sender.UserName,
399-
URL: setting.AppURL + p.Sender.UserName,
400-
IconURL: p.Sender.AvatarURL,
401-
},
402-
},
403-
},
404-
}, nil
248+
return d.createPayload(p.Sender, text, p.Release.Note, p.Release.URL, color), nil
405249
}
406250

407251
// GetDiscordPayload converts a discord webhook into a DiscordPayload
@@ -433,3 +277,23 @@ func parseHookPullRequestEventType(event models.HookEventType) (string, error) {
433277
return "", errors.New("unknown event type")
434278
}
435279
}
280+
281+
func (d *DiscordPayload) createPayload(s *api.User, title, text, url string, color int) *DiscordPayload {
282+
return &DiscordPayload{
283+
Username: d.Username,
284+
AvatarURL: d.AvatarURL,
285+
Embeds: []DiscordEmbed{
286+
{
287+
Title: title,
288+
Description: text,
289+
URL: url,
290+
Color: color,
291+
Author: DiscordEmbedAuthor{
292+
Name: s.UserName,
293+
URL: setting.AppURL + s.UserName,
294+
IconURL: s.AvatarURL,
295+
},
296+
},
297+
},
298+
}
299+
}

0 commit comments

Comments
 (0)