From fdf22845cdf1eaac19848cd2fbf7927544c8125d Mon Sep 17 00:00:00 2001 From: Alice Zhao Date: Sun, 31 Mar 2024 22:40:51 -0700 Subject: [PATCH] test: add test to updateManualBackport --- .../backport_pull_request.closed.json | 6 ++ .../backport_pull_request.merged.json | 6 ++ spec/index.spec.ts | 12 ++++ spec/operations.spec.ts | 61 +++++++++++++++++++ 4 files changed, 85 insertions(+) diff --git a/spec/fixtures/backport_pull_request.closed.json b/spec/fixtures/backport_pull_request.closed.json index fc5ff68..c910da9 100644 --- a/spec/fixtures/backport_pull_request.closed.json +++ b/spec/fixtures/backport_pull_request.closed.json @@ -12,6 +12,12 @@ "head": { "ref": "123456789iuytdxcvbnjhfdriuyfedfgy54escghjnbg" }, + "base": { + "ref": "main", + "repo": { + "default_branch": "main" + } + }, "body": "Backport of #14\nSee that PR for details.\nNotes: ", "created_at": "2018-11-01T17:29:51Z", "merged_at": "2018-11-01T17:30:11Z", diff --git a/spec/fixtures/backport_pull_request.merged.json b/spec/fixtures/backport_pull_request.merged.json index e3fbe42..00f857d 100644 --- a/spec/fixtures/backport_pull_request.merged.json +++ b/spec/fixtures/backport_pull_request.merged.json @@ -12,6 +12,12 @@ "head": { "ref": "123456789iuytdxcvbnjhfdriuyfedfgy54escghjnbg" }, + "base": { + "ref": "main", + "repo": { + "default_branch": "main" + } + }, "body": "Backport of #14\nSee that PR for details.\nNotes: ", "created_at": "2018-11-01T17:29:51Z", "merged_at": "2018-11-01T17:30:11Z", diff --git a/spec/index.spec.ts b/spec/index.spec.ts index 1d856b5..259ca9b 100644 --- a/spec/index.spec.ts +++ b/spec/index.spec.ts @@ -392,6 +392,12 @@ Notes: `, head: { ref: '123456789iuytdxcvbnjhfdriuyfedfgy54escghjnbg', }, + base: { + ref: 'main', + repo: { + default_branch: 'main', + }, + }, labels: [ { color: 'ededed', @@ -429,6 +435,12 @@ Notes: `, head: { ref: '123456789iuytdxcvbnjhfdriuyfedfgy54escghjnbg', }, + base: { + ref: 'main', + repo: { + default_branch: 'main', + }, + }, labels: [ { color: 'ededed', diff --git a/spec/operations.spec.ts b/spec/operations.spec.ts index 0be51f4..23423f3 100644 --- a/spec/operations.spec.ts +++ b/spec/operations.spec.ts @@ -5,6 +5,9 @@ import * as path from 'path'; import simpleGit from 'simple-git'; import { initRepo } from '../src/operations/init-repo'; import { setupRemotes } from '../src/operations/setup-remotes'; +import { tagBackportReviewers } from '../src/utils'; +import { PRChange } from '../src/enums'; +import { updateManualBackport } from '../src/operations/update-manual-backport'; let dirObject: { dir?: string } | null = null; @@ -13,6 +16,22 @@ const saveDir = (o: { dir: string }) => { return o.dir; }; +const backportPRMergedEvent = require('./fixtures/backport_pull_request.merged.json'); +const backportPRClosedEvent = require('./fixtures/backport_pull_request.closed.json'); +const backportPROpenedEvent = require('./fixtures/backport_pull_request.opened.json'); + +jest.mock('../src/utils', () => ({ + tagBackportReviewers: jest.fn().mockReturnValue(Promise.resolve()), + isSemverMinorPR: jest.fn().mockReturnValue(false), +})); + +jest.mock('../src/utils/label-utils', () => ({ + labelExistsOnPR: jest.fn().mockResolvedValue(true), + getSemverLabel: jest.fn().mockResolvedValue(false), + addLabels: jest.fn(), + removeLabel: jest.fn(), +})); + describe('runner', () => { jest.setTimeout(30000); console.error = jest.fn(); @@ -101,4 +120,46 @@ describe('runner', () => { } }); }); + + describe('updateManualBackport()', () => { + let context: any; + let octokit = { + pulls: { + get: jest.fn().mockReturnValue(Promise.resolve({})), + }, + issues: { + createComment: jest.fn().mockReturnValue(Promise.resolve({})), + listComments: jest.fn().mockReturnValue(Promise.resolve({ data: [] })), + }, + }; + + it('tags reviewers on manual backport creation', async () => { + context = { + ...backportPROpenedEvent, + octokit, + repo: jest.fn(), + }; + await updateManualBackport(context, PRChange.OPEN, 1234); + expect(tagBackportReviewers).toHaveBeenCalled(); + }); + + it('does not tag reviewers on merged PRs', async () => { + context = { + ...backportPRMergedEvent, + octokit, + repo: jest.fn(), + }; + await updateManualBackport(context, PRChange.MERGE, 1234); + expect(tagBackportReviewers).not.toHaveBeenCalled(); + }); + it('does not tag reviewers on closed PRs', async () => { + context = { + ...backportPRClosedEvent, + octokit, + repo: jest.fn(), + }; + await updateManualBackport(context, PRChange.CLOSE, 1234); + expect(tagBackportReviewers).not.toHaveBeenCalled(); + }); + }); });