Throw explicit error if list releases reponse doesn't have data

This commit is contained in:
Nick Cipollo
2025-01-11 21:52:42 -05:00
parent e774b3eb81
commit 033b82b409
4 changed files with 35 additions and 2 deletions

View File

@@ -218,6 +218,32 @@ describe("Action", () => {
})
it('throws error when list has no data', async () => {
const action = createAction(true, true)
getMock.mockRejectedValue({status: 404})
const error = {
errors: [
{
code: 'already_exists'
}
]
}
createMock.mockRejectedValue(error)
listMock.mockResolvedValue({})
expect.hasAssertions()
try {
await action.perform()
} catch (error) {
expect(error).toEqual(Error("No releases found. Response: {}"))
}
expect(listMock).toBeCalled()
expect(createMock).not.toBeCalled()
expect(updateMock).not.toBeCalled()
})
it('throws error when update fails', async () => {
const action = createAction(true, true)
@@ -428,7 +454,7 @@ describe("Action", () => {
destroyArtifacts: artifactDestroyMock
}
})
const MockActionSkipper = jest.fn<ActionSkipper, any>(() => {
return {
shouldSkip: shouldSkipMock

3
dist/index.js vendored
View File

@@ -124,6 +124,9 @@ class Action {
const tag = this.inputs.tag;
const response = await this.releases.listReleases();
const releases = response.data;
if (!releases) {
throw new Error(`No releases found. Response: ${JSON.stringify(response)}`);
}
const draftRelease = releases.find(release => release.draft && release.tag_name == tag);
return draftRelease?.id;
}

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@@ -120,6 +120,10 @@ export class Action {
const tag = this.inputs.tag
const response = await this.releases.listReleases()
const releases = response.data
if(!releases) {
throw new Error(`No releases found. Response: ${JSON.stringify(response)}`)
}
const draftRelease = releases.find(release => release.draft && release.tag_name == tag)
return draftRelease?.id