test: versionInfo

Add full test coverage resolving the `versionInfo`
This commit is contained in:
Marco Biedermann 2024-05-01 20:40:06 +02:00 committed by Tom Hu
parent 9e145151be
commit 51e4bb0297
No known key found for this signature in database
GPG key ID: 79155678363963D2

63
src/version.test.ts Normal file
View file

@ -0,0 +1,63 @@
import * as core from '@actions/core';
import {Agent, MockAgent, setGlobalDispatcher} from 'undici';
import versionInfo from './version';
const mockAgent = new MockAgent();
beforeAll(() => {
setGlobalDispatcher(mockAgent);
mockAgent.disableNetConnect();
});
afterEach(() => {
jest.clearAllMocks();
});
afterAll(async () => {
await mockAgent.close();
setGlobalDispatcher(new Agent());
});
describe('versionInfo', () => {
const platform = 'linux';
test('should resolve requested version info', async () => {
const version = 'latest';
const coreInfoSpy = jest.spyOn(core, 'info');
mockAgent
.get('https://cli.codecov.io')
.intercept({
path: `/${platform}/${version}`,
})
.reply(200, {
version: 'v0.5.2',
});
await versionInfo(platform, version);
expect(coreInfoSpy).toHaveBeenCalledTimes(2);
expect(coreInfoSpy).toHaveBeenCalledWith('==> Running version latest');
expect(coreInfoSpy).toHaveBeenCalledWith('==> Running version v0.5.2');
});
test('should handle unsupported version', async () => {
const version = 'unsupported';
const coreInfoSpy = jest.spyOn(core, 'info');
mockAgent
.get('https://cli.codecov.io')
.intercept({
path: `/${platform}/${version}`,
})
.reply(404, 'MESSAGE');
await versionInfo(platform, version);
expect(coreInfoSpy).toHaveBeenCalledTimes(2);
expect(coreInfoSpy).toHaveBeenCalledWith('==> Running version unsupported');
expect(coreInfoSpy).toHaveBeenCalledWith(
'Could not pull latest version information: SyntaxError: Unexpected token \'M\', "MESSAGE" is not valid JSON',
);
});
});