Skip to content

Commit 42ec1f9

Browse files
authored
refactor: github_api/pulls (#541)
* refactor: github_api/pulls * ran lint
1 parent aa29c21 commit 42ec1f9

File tree

5 files changed

+76
-24
lines changed

5 files changed

+76
-24
lines changed

__fixtures__/unit/helper.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ module.exports = {
179179
return { status: 204 }
180180
}
181181
},
182+
requestReviewers: jest.fn().mockReturnValue(options.requestReviewers || 'request review success'),
182183
merge: jest.fn().mockReturnValue(options.merge || 'merged'),
183184
get: jest.fn()
184185
},

__tests__/unit/github/api.test.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,3 +604,46 @@ describe('mergePR', () => {
604604
}
605605
})
606606
})
607+
608+
describe('requestReviewers', () => {
609+
test('return correct data if no error', async () => {
610+
const res = await GithubAPI.requestReviewers(Helper.mockContext())
611+
expect(res).toEqual('request review success')
612+
})
613+
614+
test('that error are NOT re-thrown', async () => {
615+
const context = Helper.mockContext()
616+
context.octokit.pulls.requestReviewers = jest.fn().mockRejectedValue({ status: 402 })
617+
618+
try {
619+
await GithubAPI.requestReviewers(context)
620+
} catch (e) {
621+
// fail if it throws error
622+
expect(true).toBe(false)
623+
}
624+
})
625+
})
626+
627+
describe('getPR', () => {
628+
test('return correct data if no error', async () => {
629+
const context = Helper.mockContext()
630+
context.octokit.pulls.get.mockReturnValue({ data: { number: 12 } })
631+
632+
const res = await GithubAPI.getPR(context)
633+
634+
expect(res.data).toEqual({ number: 12 })
635+
})
636+
637+
test('that error are re-thrown', async () => {
638+
const context = Helper.mockContext()
639+
context.octokit.pulls.get = jest.fn().mockRejectedValue({ status: 402 })
640+
641+
try {
642+
await GithubAPI.getPR(context)
643+
// Fail test if above expression doesn't throw anything.
644+
expect(true).toBe(false)
645+
} catch (e) {
646+
expect(e.status).toBe(402)
647+
}
648+
})
649+
})

lib/actions/merge.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ const MERGE_METHOD_OPTIONS = ['merge', 'rebase', 'squash']
66
const mergePR = async (context, prNumber, mergeMethod, actionObj) => {
77
const isMerged = await actionObj.githubAPI.checkIfMerged(context, prNumber)
88
if (!isMerged) {
9-
const pullRequest = await context.octokit.pulls.get(context.repo({ pull_number: prNumber }))
9+
const pullRequest = await actionObj.githubAPI.getPR(context, prNumber)
10+
1011
if (pullRequest.data.mergeable_state !== 'blocked' && pullRequest.data.state === 'open') {
1112
await actionObj.githubAPI.mergePR(context, context.repo({ pull_number: prNumber, merge_method: mergeMethod }))
1213
}

lib/actions/request_review.js

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,6 @@
11
const { Action } = require('./action')
2-
const logger = require('../logger')
32
const _ = require('lodash')
43

5-
const createRequestReview = async (context, number, reviewers, actionObj) => {
6-
let res
7-
try {
8-
res = await context.octokit.pulls.requestReviewers(
9-
context.repo({ pull_number: number, reviewers })
10-
)
11-
} catch (err) {
12-
const errorLog = {
13-
log_type: logger.logTypes.REQUEST_REVIEW_FAIL_ERROR,
14-
eventId: context.eventId,
15-
repo: context.payload.repository.full_name,
16-
action_name: actionObj.name
17-
}
18-
19-
actionObj.log.info(JSON.stringify(errorLog))
20-
}
21-
return res
22-
}
23-
244
class RequestReview extends Action {
255
constructor () {
266
super('request_review')
@@ -54,11 +34,10 @@ class RequestReview extends Action {
5434
if (collaboratorsToRequest.length === 0) {
5535
return
5636
}
57-
return createRequestReview(
37+
return this.githubAPI.requestReviewers(
5838
context,
5939
prNumber,
60-
reviewerToRequest,
61-
this
40+
reviewerToRequest
6241
)
6342
}
6443
}

lib/github/api.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,34 @@ class GithubAPI {
412412
}
413413
}
414414
}
415+
416+
static async getPR (context, pullNumber) {
417+
const callFn = 'pulls.get'
418+
419+
debugLog(context, callFn)
420+
421+
try {
422+
return context.octokit.pulls.get(context.repo({ pull_number: pullNumber }))
423+
} catch (err) {
424+
return checkCommonError(err, context, callFn)
425+
}
426+
}
427+
428+
static async requestReviewers (context, pullNumber, reviewers) {
429+
const callFn = 'pulls.requestReview'
430+
431+
debugLog(context, callFn)
432+
try {
433+
return await context.octokit.pulls.requestReviewers(
434+
context.repo({ pull_number: pullNumber, reviewers })
435+
)
436+
} catch (err) {
437+
const errorLog = createLog(context, { callFn: callFn, errors: err.toString(), logType: logger.logTypes.REQUEST_REVIEW_FAIL_ERROR })
438+
const log = logger.create(`GithubAPI/${callFn}`)
439+
440+
log.info(errorLog)
441+
}
442+
}
415443
}
416444

417445
module.exports = GithubAPI

0 commit comments

Comments
 (0)