From 1414dcc7222fc7645716c84cb981b9a715603320 Mon Sep 17 00:00:00 2001 From: Alice Zhao Date: Tue, 9 Apr 2024 19:33:51 -0700 Subject: [PATCH] test: add new utils test file --- spec/utils.spec.ts | 77 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 spec/utils.spec.ts diff --git a/spec/utils.spec.ts b/spec/utils.spec.ts new file mode 100644 index 0000000..5d9974d --- /dev/null +++ b/spec/utils.spec.ts @@ -0,0 +1,77 @@ +import * as logUtils from '../src/utils/log-util'; +import { LogLevel } from '../src/enums'; +import { tagBackportReviewers } from '../src/utils'; + +const backportPROpenedEvent = require('./fixtures/backport_pull_request.opened.json'); + +jest.mock('../src/constants', () => ({ + ...jest.requireActual('../src/constants'), + DEFAULT_BACKPORT_REVIEW_TEAM: 'electron/wg-releases', +})); + +describe('utils', () => { + describe('tagBackportReviewers()', () => { + const octokit = { + pulls: { + requestReviewers: jest.fn(), + }, + repos: { + getCollaboratorPermissionLevel: jest.fn().mockReturnValue( + Promise.resolve({ + data: { + permission: 'admin', + }, + }), + ), + }, + }; + + const context = { + octokit, + repo: jest.fn((obj) => obj), + ...backportPROpenedEvent, + }; + + beforeEach(() => jest.clearAllMocks()); + + it('correctly tags team reviewers when user is undefined', async () => { + await tagBackportReviewers({ context, targetPrNumber: 1234 }); + expect(octokit.pulls.requestReviewers).toHaveBeenCalled(); + expect(octokit.pulls.requestReviewers).toHaveBeenCalledWith({ + pull_number: 1234, + team_reviewers: ['wg-releases'], + reviewers: [], + }); + }); + + it('correctly tags team reviewers and reviewers when user is defined', async () => { + const user = 'abc'; + await tagBackportReviewers({ context, targetPrNumber: 1234, user }); + expect(octokit.pulls.requestReviewers).toHaveBeenCalled(); + expect(octokit.pulls.requestReviewers).toHaveBeenCalledWith({ + pull_number: 1234, + team_reviewers: ['wg-releases'], + reviewers: [user], + }); + }); + + it('logs an error if tagBackportReviewers throws an error', async () => { + const error = new Error('Request failed'); + context.octokit.pulls.requestReviewers = jest + .fn() + .mockRejectedValue(error); + + const logSpy = jest.spyOn(logUtils, 'log'); + await tagBackportReviewers({ context, targetPrNumber: 1234 }); + + expect(octokit.pulls.requestReviewers).toHaveBeenCalled(); + + expect(logSpy).toHaveBeenCalledWith( + 'tagBackportReviewers', + LogLevel.ERROR, + `Failed to request reviewers for PR #1234`, + error, + ); + }); + }); +});