-
Notifications
You must be signed in to change notification settings - Fork 78
/
main.test.ts
86 lines (74 loc) 路 1.91 KB
/
main.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import * as core from "@actions/core";
import * as github from "@actions/github";
import { Context } from "@actions/github/lib/context";
import nock from "nock";
import { approve } from "./approve";
import { run } from "./main";
jest.mock("./approve");
const mockedApprove = jest.mocked(approve, true);
jest.mock("@actions/github");
const mockedGithub = jest.mocked(github, true);
afterAll(() => {
jest.unmock("./approve");
jest.unmock("@actions/github");
});
const originalEnv = process.env;
beforeEach(() => {
jest.restoreAllMocks();
mockedApprove.mockReset();
jest.spyOn(core, "setFailed").mockImplementation(jest.fn());
nock.disableNetConnect();
process.env = {
GITHUB_REPOSITORY: "hmarr/test",
"INPUT_GITHUB-TOKEN": "tok-xyz",
};
});
afterEach(() => {
nock.enableNetConnect();
process.env = originalEnv;
});
test("passes the review message to approve", async () => {
mockedGithub.context = ghContext();
process.env["INPUT_REVIEW-MESSAGE"] = "LGTM";
await run();
expect(mockedApprove).toHaveBeenCalledWith(
"tok-xyz",
expect.anything(),
101,
"LGTM"
);
});
test("calls approve when no PR number is provided", async () => {
mockedGithub.context = ghContext();
await run();
expect(mockedApprove).toHaveBeenCalledWith(
"tok-xyz",
expect.anything(),
101,
undefined
);
});
test("calls approve when a valid PR number is provided", async () => {
process.env["INPUT_PULL-REQUEST-NUMBER"] = "456";
await run();
expect(mockedApprove).toHaveBeenCalledWith(
"tok-xyz",
expect.anything(),
456,
undefined
);
});
test("errors when an invalid PR number is provided", async () => {
process.env["INPUT_PULL-REQUEST-NUMBER"] = "not a number";
await run();
expect(mockedApprove).not.toHaveBeenCalled();
});
function ghContext(): Context {
const ctx = new Context();
ctx.payload = {
pull_request: {
number: 101,
},
};
return ctx;
}