Add additional tests

This commit is contained in:
Thomas Hughes 2019-09-26 15:50:59 -05:00
parent aa6f452281
commit cc8e50bfc7
No known key found for this signature in database
GPG Key ID: B2D8646423EF5814

View File

@ -10,13 +10,13 @@ describe('module', () => {
let createRelease;
beforeEach(() => {
core.getInput = jest.fn()
.mockReturnValueOnce('refs/tags/v1.0.0')
.mockReturnValueOnce('myRelease')
.mockReturnValueOnce('false')
.mockReturnValueOnce('false');
createRelease = jest.fn();
createRelease = jest.fn().mockReturnValueOnce({
data: {
id: 'releaseId',
html_url: 'htmlUrl',
upload_url: 'uploadUrl'
}
});
context.repo = {
owner: 'owner',
@ -33,6 +33,13 @@ describe('module', () => {
});
test('Create release endpoint is called', async () => {
core.getInput = jest
.fn()
.mockReturnValueOnce('refs/tags/v1.0.0')
.mockReturnValueOnce('myRelease')
.mockReturnValueOnce('false')
.mockReturnValueOnce('false');
await run();
expect(createRelease).toHaveBeenCalledWith({
@ -45,5 +52,84 @@ describe('module', () => {
});
});
test('Outputs are set', async () => {});
test('Draft release is created', async () => {
core.getInput = jest
.fn()
.mockReturnValueOnce('refs/tags/v1.0.0')
.mockReturnValueOnce('myRelease')
.mockReturnValueOnce('true')
.mockReturnValueOnce('false');
await run();
expect(createRelease).toHaveBeenCalledWith({
owner: 'owner',
repo: 'repo',
tag_name: 'v1.0.0',
name: 'myRelease',
draft: true,
prerelease: false
});
});
test('Pre-release release is created', async () => {
core.getInput = jest
.fn()
.mockReturnValueOnce('refs/tags/v1.0.0')
.mockReturnValueOnce('myRelease')
.mockReturnValueOnce('false')
.mockReturnValueOnce('true');
await run();
expect(createRelease).toHaveBeenCalledWith({
owner: 'owner',
repo: 'repo',
tag_name: 'v1.0.0',
name: 'myRelease',
draft: false,
prerelease: true
});
});
test('Outputs are set', async () => {
core.getInput = jest
.fn()
.mockReturnValueOnce('refs/tags/v1.0.0')
.mockReturnValueOnce('myRelease')
.mockReturnValueOnce('false')
.mockReturnValueOnce('false');
core.setOutput = jest.fn();
await run();
expect(core.setOutput).toHaveBeenNthCalledWith(1, 'id', 'releaseId');
expect(core.setOutput).toHaveBeenNthCalledWith(2, 'html_url', 'htmlUrl');
expect(core.setOutput).toHaveBeenNthCalledWith(3, 'upload_url', 'uploadUrl');
});
test('Action fails elegantly', async () => {
core.getInput = jest
.fn()
.mockReturnValueOnce('refs/tags/v1.0.0')
.mockReturnValueOnce('myRelease')
.mockReturnValueOnce('false')
.mockReturnValueOnce('false');
createRelease.mockRestore();
createRelease.mockImplementation(() => {
throw new Error('Error creating release');
});
core.setOutput = jest.fn();
core.setFailed = jest.fn();
await run();
expect(createRelease).toHaveBeenCalled();
expect(core.setFailed).toHaveBeenCalledWith('Error creating release');
expect(core.setOutput).toHaveBeenCalledTimes(0);
});
});