Skip to content

Commit cc8e50b

Browse files
committed
Add additional tests
1 parent aa6f452 commit cc8e50b

File tree

1 file changed

+94
-8
lines changed

1 file changed

+94
-8
lines changed

tests/main.test.js

Lines changed: 94 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ describe('module', () => {
1010
let createRelease;
1111

1212
beforeEach(() => {
13-
core.getInput = jest.fn()
14-
.mockReturnValueOnce('refs/tags/v1.0.0')
15-
.mockReturnValueOnce('myRelease')
16-
.mockReturnValueOnce('false')
17-
.mockReturnValueOnce('false');
18-
19-
createRelease = jest.fn();
13+
createRelease = jest.fn().mockReturnValueOnce({
14+
data: {
15+
id: 'releaseId',
16+
html_url: 'htmlUrl',
17+
upload_url: 'uploadUrl'
18+
}
19+
});
2020

2121
context.repo = {
2222
owner: 'owner',
@@ -33,6 +33,13 @@ describe('module', () => {
3333
});
3434

3535
test('Create release endpoint is called', async () => {
36+
core.getInput = jest
37+
.fn()
38+
.mockReturnValueOnce('refs/tags/v1.0.0')
39+
.mockReturnValueOnce('myRelease')
40+
.mockReturnValueOnce('false')
41+
.mockReturnValueOnce('false');
42+
3643
await run();
3744

3845
expect(createRelease).toHaveBeenCalledWith({
@@ -45,5 +52,84 @@ describe('module', () => {
4552
});
4653
});
4754

48-
test('Outputs are set', async () => {});
55+
test('Draft release is created', async () => {
56+
core.getInput = jest
57+
.fn()
58+
.mockReturnValueOnce('refs/tags/v1.0.0')
59+
.mockReturnValueOnce('myRelease')
60+
.mockReturnValueOnce('true')
61+
.mockReturnValueOnce('false');
62+
63+
await run();
64+
65+
expect(createRelease).toHaveBeenCalledWith({
66+
owner: 'owner',
67+
repo: 'repo',
68+
tag_name: 'v1.0.0',
69+
name: 'myRelease',
70+
draft: true,
71+
prerelease: false
72+
});
73+
});
74+
75+
test('Pre-release release is created', async () => {
76+
core.getInput = jest
77+
.fn()
78+
.mockReturnValueOnce('refs/tags/v1.0.0')
79+
.mockReturnValueOnce('myRelease')
80+
.mockReturnValueOnce('false')
81+
.mockReturnValueOnce('true');
82+
83+
await run();
84+
85+
expect(createRelease).toHaveBeenCalledWith({
86+
owner: 'owner',
87+
repo: 'repo',
88+
tag_name: 'v1.0.0',
89+
name: 'myRelease',
90+
draft: false,
91+
prerelease: true
92+
});
93+
});
94+
95+
test('Outputs are set', async () => {
96+
core.getInput = jest
97+
.fn()
98+
.mockReturnValueOnce('refs/tags/v1.0.0')
99+
.mockReturnValueOnce('myRelease')
100+
.mockReturnValueOnce('false')
101+
.mockReturnValueOnce('false');
102+
103+
core.setOutput = jest.fn();
104+
105+
await run();
106+
107+
expect(core.setOutput).toHaveBeenNthCalledWith(1, 'id', 'releaseId');
108+
expect(core.setOutput).toHaveBeenNthCalledWith(2, 'html_url', 'htmlUrl');
109+
expect(core.setOutput).toHaveBeenNthCalledWith(3, 'upload_url', 'uploadUrl');
110+
});
111+
112+
test('Action fails elegantly', async () => {
113+
core.getInput = jest
114+
.fn()
115+
.mockReturnValueOnce('refs/tags/v1.0.0')
116+
.mockReturnValueOnce('myRelease')
117+
.mockReturnValueOnce('false')
118+
.mockReturnValueOnce('false');
119+
120+
createRelease.mockRestore();
121+
createRelease.mockImplementation(() => {
122+
throw new Error('Error creating release');
123+
});
124+
125+
core.setOutput = jest.fn();
126+
127+
core.setFailed = jest.fn();
128+
129+
await run();
130+
131+
expect(createRelease).toHaveBeenCalled();
132+
expect(core.setFailed).toHaveBeenCalledWith('Error creating release');
133+
expect(core.setOutput).toHaveBeenCalledTimes(0);
134+
});
49135
});

0 commit comments

Comments
 (0)