Skip to content
This repository was archived by the owner on Apr 17, 2024. It is now read-only.

Commit 2ad52f4

Browse files
13915: Follow up to [hubot-code-review] channel ghosts (#63)
* WIP: 13915 * Suppress comments and reviews from bots * CodeReview stores room & channel_id directly * Remove trailing and * Update src/CodeReviews.coffee Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
1 parent f101e33 commit 2ad52f4

5 files changed

+27
-20
lines changed

src/CodeReview.coffee

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
class CodeReview
2-
constructor: (@user, @slug, @url, @status = 'new', @reviewer = false) ->
2+
constructor: (
3+
@user,
4+
@slug,
5+
@url,
6+
@room = @user.room,
7+
@channel_id = @user.room,
8+
@status = 'new',
9+
@reviewer = false) ->
310
@last_updated = Date.now()
411
@extra_info = ""
512
@github_pr_submitter = @user

src/CodeReviews.coffee

+4-4
Original file line numberDiff line numberDiff line change
@@ -178,11 +178,11 @@ class CodeReviews
178178
# Add a CR to a room queue
179179
#
180180
# @param CodeReview cr Code Review object to add
181-
# @retun none
181+
# @return none
182182
add: (cr) ->
183-
return unless cr.user.room
184-
@room_queues[cr.user.room] ||= []
185-
@room_queues[cr.user.room].unshift(cr) if false == @find_slug_index(cr.user.room, cr.slug)
183+
return unless cr.room
184+
@room_queues[cr.room] ||= []
185+
@room_queues[cr.room].unshift(cr) if false == @find_slug_index(cr.room, cr.slug)
186186
@update_redis()
187187
@reminder_count = 0
188188
@queue()

src/code-reviews.coffee

+7-8
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@ module.exports = (robot) ->
2525
slug = code_reviews.matches_to_slug msg.match
2626
msgRoomName msg, (room_name) ->
2727
if slug and room_name
28-
cr = new CodeReview msg.message.user, slug, url
29-
# Specific override for human readable room name
30-
cr.user.room = room_name
28+
cr = new CodeReview msg.message.user, slug, url, room_name, msg.message.room
3129
found = code_reviews.find_slug_index room_name, slug
3230
if found is false
3331
# 'Take' a code review for karma
@@ -287,12 +285,12 @@ module.exports = (robot) ->
287285
return
288286

289287
# Check if PR was approved (via emoji in issue_comment body)
290-
if req.headers['x-github-event'] is 'issue_comment'
288+
if req.headers['x-github-event'] is 'issue_comment' and
289+
req.body.comment.user.type != 'Bot' # Commenter is not a bot
291290
if ((process.env.HUBOT_CODE_REVIEW_EMOJI_APPROVE?) and
292291
process.env.HUBOT_CODE_REVIEW_EMOJI_APPROVE)
293292
if (code_reviews.emoji_regex.test(req.body.comment.body) or
294-
code_reviews.emoji_unicode_test(req.body.comment.body)) and
295-
req.body.comment.user.type != 'Bot'
293+
code_reviews.emoji_unicode_test(req.body.comment.body))
296294
code_reviews.approve_cr_by_url(
297295
req.body.issue.html_url,
298296
req.body.comment.user.login,
@@ -323,15 +321,16 @@ module.exports = (robot) ->
323321
if updated.length
324322
response = "set status of #{updated[0].slug} to "
325323
rooms = for cr in updated
326-
"#{cr.status} in #{cr.user.room}"
324+
"#{cr.status} in #{cr.room}"
327325
response += rooms.join(', ')
328326
else
329327
response = "#{req.body.pull_request.html_url} not found in any queue"
330328
else
331329
response = "#{req.body.pull_request.html_url} is still open"
332330

333331
# Check if PR was approved via GitHub's Pull Request Review
334-
else if req.headers['x-github-event'] is 'pull_request_review'
332+
else if req.headers['x-github-event'] is 'pull_request_review' and
333+
req.body.review.user.type != 'Bot' # not a bot
335334
if req.body.action? and req.body.action is 'dismissed'
336335
response = "pull_request_review dismissed #{req.body.pull_request.html_url}"
337336
code_reviews.dismiss_cr_by_url(

test/codeReviewEmojiAcceptSpec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ describe('Code Review Emoji Approval', () => {
271271
submitter[key] = userMeta[key];
272272
});
273273
}
274-
code_reviews.add(new CodeReview(submitter, makeSlug(url), url));
274+
code_reviews.add(new CodeReview(submitter, makeSlug(url), url), submitter.room, submitter.room);
275275
}
276276

277277
/**

test/codeReviewSpec.js

+7-6
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@ describe('Code Review', () => {
118118
// there should now be one room from the current user
119119
const rooms = Object.keys(code_reviews.room_queues);
120120
expect(rooms.length).toEqual(1);
121-
expect(rooms[0]).toEqual(currentUser.room);
121+
expect(rooms[0]).toEqual(code_reviews.room_queues[rooms[0]][0].room);
122+
expect(rooms[0]).toEqual(code_reviews.room_queues[rooms[0]][0].channel_id);
122123

123124
// there should be one CR in the room queue
124125
expect(code_reviews.room_queues[rooms[0]].length).toEqual(1);
@@ -136,7 +137,7 @@ describe('Code Review', () => {
136137
it('will not a allow the same CR in the same room regardless of status', (done) => {
137138
const currentUser = users[7];
138139
const url = PullRequests[4];
139-
code_reviews.add(new CodeReview(currentUser, makeSlug(url), url));
140+
code_reviews.add(new CodeReview(currentUser, makeSlug(url), url, currentUser.room, currentUser.room));
140141

141142
// listener for second time the CR is added
142143
adapter.on('send', (envelope, strings) => {
@@ -163,7 +164,7 @@ describe('Code Review', () => {
163164
const currentUser = users[12];
164165
const url = PullRequests[6];
165166
const firstRoom = currentUser.room;
166-
code_reviews.add(new CodeReview(currentUser, makeSlug(url), url));
167+
code_reviews.add(new CodeReview(currentUser, makeSlug(url), url, firstRoom, firstRoom));
167168

168169
// listener for second time the CR is added
169170
adapter.on('send', (envelope, strings) => {
@@ -358,8 +359,8 @@ describe('Code Review', () => {
358359
code_reviews.room_queues.test_room = [];
359360
code_reviews.room_queues.second_room = [];
360361
PullRequests.forEach((url, i) => {
361-
const cr = new CodeReview(users[6], makeSlug(url), url);
362362
const room = 3 >= i ? 'test_room' : 'second_room';
363+
const cr = new CodeReview(users[6], makeSlug(url), url, room, room);
363364
code_reviews.room_queues[room].unshift(cr);
364365
});
365366
expect(roomStatusCount('test_room', 'new')).toBe(4);
@@ -629,7 +630,7 @@ describe('Code Review', () => {
629630
const halfHourInMs = 1000 * 60 * 30;
630631
// add CRs with different ages and statuses
631632
statuses.forEach((status, i) => {
632-
const cr = new CodeReview(users[i], makeSlug(PullRequests[i]), PullRequests[i]);
633+
const cr = new CodeReview(users[i], makeSlug(PullRequests[i]), PullRequests[i], users[i].room, users[i].room);
633634
cr.status = status;
634635
cr.last_updated += -1 * i * halfHourInMs;
635636
code_reviews.add(cr);
@@ -990,7 +991,7 @@ describe('Code Review', () => {
990991
submitter[key] = userMeta[key];
991992
});
992993
}
993-
code_reviews.add(new CodeReview(submitter, makeSlug(url), url));
994+
code_reviews.add(new CodeReview(submitter, makeSlug(url), url, submitter.room, submitter.room));
994995
}
995996

996997
/**

0 commit comments

Comments
 (0)