@@ -241,19 +241,68 @@ func Test_WebhookIssueComment(t *testing.T) {
241241
242242 testAPICreateWebhookForRepo (t , session , "user2" , "repo1" , provider .URL (), "issue_comment" )
243243
244- // 2. trigger the webhook
245- issueURL := testNewIssue (t , session , "user2" , "repo1" , "Title2" , "Description2" )
246- testIssueAddComment (t , session , issueURL , "issue title2 comment1" , "" )
244+ t .Run ("create comment" , func (t * testing.T ) {
245+ // 2. trigger the webhook
246+ issueURL := testNewIssue (t , session , "user2" , "repo1" , "Title2" , "Description2" )
247+ testIssueAddComment (t , session , issueURL , "issue title2 comment1" , "" )
247248
248- // 3. validate the webhook is triggered
249- assert .Equal (t , "issue_comment" , triggeredEvent )
250- assert .Len (t , payloads , 1 )
251- assert .EqualValues (t , "created" , payloads [0 ].Action )
252- assert .Equal (t , "repo1" , payloads [0 ].Issue .Repo .Name )
253- assert .Equal (t , "user2/repo1" , payloads [0 ].Issue .Repo .FullName )
254- assert .Equal (t , "Title2" , payloads [0 ].Issue .Title )
255- assert .Equal (t , "Description2" , payloads [0 ].Issue .Body )
256- assert .Equal (t , "issue title2 comment1" , payloads [0 ].Comment .Body )
249+ // 3. validate the webhook is triggered
250+ assert .Equal (t , "issue_comment" , triggeredEvent )
251+ assert .Len (t , payloads , 1 )
252+ assert .EqualValues (t , "created" , payloads [0 ].Action )
253+ assert .Equal (t , "repo1" , payloads [0 ].Issue .Repo .Name )
254+ assert .Equal (t , "user2/repo1" , payloads [0 ].Issue .Repo .FullName )
255+ assert .Equal (t , "Title2" , payloads [0 ].Issue .Title )
256+ assert .Equal (t , "Description2" , payloads [0 ].Issue .Body )
257+ assert .Equal (t , "issue title2 comment1" , payloads [0 ].Comment .Body )
258+ })
259+
260+ t .Run ("update comment" , func (t * testing.T ) {
261+ payloads = make ([]api.IssueCommentPayload , 0 , 2 )
262+ triggeredEvent = ""
263+
264+ // 2. trigger the webhook
265+ issueURL := testNewIssue (t , session , "user2" , "repo1" , "Title3" , "Description3" )
266+ commentID := testIssueAddComment (t , session , issueURL , "issue title3 comment1" , "" )
267+ modifiedContent := "issue title2 comment1 - modified"
268+ req := NewRequestWithValues (t , "POST" , fmt .Sprintf ("/%s/%s/comments/%d" , "user2" , "repo1" , commentID ), map [string ]string {
269+ "_csrf" : GetUserCSRFToken (t , session ),
270+ "content" : modifiedContent ,
271+ })
272+ session .MakeRequest (t , req , http .StatusOK )
273+
274+ // 3. validate the webhook is triggered
275+ assert .Equal (t , "issue_comment" , triggeredEvent )
276+ assert .Len (t , payloads , 2 )
277+ assert .EqualValues (t , "edited" , payloads [1 ].Action )
278+ assert .Equal (t , "repo1" , payloads [1 ].Issue .Repo .Name )
279+ assert .Equal (t , "user2/repo1" , payloads [1 ].Issue .Repo .FullName )
280+ assert .Equal (t , "Title3" , payloads [1 ].Issue .Title )
281+ assert .Equal (t , "Description3" , payloads [1 ].Issue .Body )
282+ assert .Equal (t , modifiedContent , payloads [1 ].Comment .Body )
283+ })
284+
285+ t .Run ("Update comment with no content change" , func (t * testing.T ) {
286+ payloads = make ([]api.IssueCommentPayload , 0 , 2 )
287+ triggeredEvent = ""
288+ commentContent := "issue title3 comment1"
289+
290+ // 2. trigger the webhook
291+ issueURL := testNewIssue (t , session , "user2" , "repo1" , "Title3" , "Description3" )
292+ commentID := testIssueAddComment (t , session , issueURL , commentContent , "" )
293+
294+ payloads = make ([]api.IssueCommentPayload , 0 , 2 )
295+ triggeredEvent = ""
296+ req := NewRequestWithValues (t , "POST" , fmt .Sprintf ("/%s/%s/comments/%d" , "user2" , "repo1" , commentID ), map [string ]string {
297+ "_csrf" : GetUserCSRFToken (t , session ),
298+ "content" : commentContent ,
299+ })
300+ session .MakeRequest (t , req , http .StatusOK )
301+
302+ // 3. validate the webhook is not triggered because no content change
303+ assert .Empty (t , triggeredEvent )
304+ assert .Empty (t , payloads )
305+ })
257306 })
258307}
259308
0 commit comments