mirror of
https://github.com/actions/publish-action.git
synced 2026-08-08 13:32:25 +02:00
* Migrate to ESM * Use default semver import and root SemVer type --------- Co-authored-by: gowridurgad <gowridurgad@gmail.com>
51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
import {jest, describe, it, expect, beforeEach, afterEach} from '@jest/globals';
|
|
import * as github from '@actions/github';
|
|
import * as apiUtils from '../src/api-utils.js';
|
|
|
|
import prereleaseData from './data/pre-release.json' with {type: 'json'};
|
|
import releaseData from './data/release.json' with {type: 'json'};
|
|
|
|
const token = 'faketoken';
|
|
const octokitClient = github.getOctokit(token);
|
|
|
|
type GetReleaseByTagResponse = Awaited<
|
|
ReturnType<typeof octokitClient.rest.repos.getReleaseByTag>
|
|
>;
|
|
|
|
let getReleaseSpy: jest.SpiedFunction<
|
|
typeof octokitClient.rest.repos.getReleaseByTag
|
|
>;
|
|
|
|
process.env.GITHUB_REPOSITORY = 'test/repository';
|
|
|
|
describe('validateIfReleaseIsPublished', () => {
|
|
beforeEach(() => {
|
|
getReleaseSpy = jest.spyOn(octokitClient.rest.repos, 'getReleaseByTag');
|
|
});
|
|
|
|
it('throw if release is marked as pre-release', async () => {
|
|
getReleaseSpy.mockResolvedValue(prereleaseData as GetReleaseByTagResponse);
|
|
|
|
expect.assertions(1);
|
|
await expect(
|
|
apiUtils.validateIfReleaseIsPublished('v1.0.0', octokitClient)
|
|
).rejects.toThrow(
|
|
"The 'v1.0.0' release is marked as pre-release. Updating tags for pre-release is not supported"
|
|
);
|
|
});
|
|
|
|
it('validate that release is published', async () => {
|
|
getReleaseSpy.mockResolvedValue(releaseData as GetReleaseByTagResponse);
|
|
|
|
expect.assertions(1);
|
|
await expect(
|
|
apiUtils.validateIfReleaseIsPublished('v1.1.0', octokitClient)
|
|
).resolves.not.toThrow();
|
|
});
|
|
|
|
afterEach(() => {
|
|
jest.resetAllMocks();
|
|
jest.clearAllMocks();
|
|
});
|
|
});
|