From b903bc8693e1afe301d46d9e6da1b79271c2be62 Mon Sep 17 00:00:00 2001 From: Aparna Jyothi Date: Wed, 26 Feb 2025 18:53:51 +0530 Subject: [PATCH] test cases update --- __tests__/main.test.ts | 76 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/__tests__/main.test.ts b/__tests__/main.test.ts index 2766a92d..e9eaafdd 100644 --- a/__tests__/main.test.ts +++ b/__tests__/main.test.ts @@ -173,7 +173,44 @@ describe('main tests', () => { }); }); - + describe('getNodeVersionFromFile', () => { + each` + contents | expected + ${'12'} | ${'12'} + ${'12.3'} | ${'12.3'} + ${'12.3.4'} | ${'12.3.4'} + ${'v12.3.4'} | ${'12.3.4'} + ${'lts/erbium'} | ${'lts/erbium'} + ${'lts/*'} | ${'lts/*'} + ${'nodejs 12.3.4'} | ${'12.3.4'} + ${'ruby 2.3.4\nnodejs 12.3.4\npython 3.4.5'} | ${'12.3.4'} + ${''} | ${''} + ${'unknown format'} | ${'unknown format'} + ${' 14.1.0 '} | ${'14.1.0'} + ${'{"volta": {"node": ">=14.0.0 <=17.0.0"}}'}| ${'>=14.0.0 <=17.0.0'} + ${'{"volta": {"extends": "./package.json"}}'}| ${'18.0.0'} + ${'{"engines": {"node": "17.0.0"}}'} | ${'17.0.0'} + ${'{}'} | ${null} + `.it('parses "$contents"', ({contents, expected}) => { + const existsSpy = jest.spyOn(fs, 'existsSync'); + existsSpy.mockImplementation(() => true); + + const readFileSpy = jest.spyOn(fs, 'readFileSync'); + readFileSpy.mockImplementation(filePath => { + if ( + typeof filePath === 'string' && + path.basename(filePath) === 'package.json' + ) { + // Special case for volta.extends + return '{"volta": {"node": "18.0.0"}}'; + } + + return contents; + }); + + expect(util.getNodeVersionFromFile('file')).toBe(expected); + }); + }); describe('node-version-file flag', () => { beforeEach(() => { @@ -291,5 +328,40 @@ describe('main tests', () => { }); }); - + describe('mirror-url parameter', () => { + beforeEach(() => { + inputs['mirror-url'] = 'https://custom-mirror-url.com'; + + validateMirrorUrlSpy = jest.spyOn(main, 'run'); + validateMirrorUrlSpy.mockImplementation(() => {}); + }); + + afterEach(() => { + validateMirrorUrlSpy.mockRestore(); + }); + + it('Read mirror-url if mirror-url is provided', async () => { + // Arrange + inputs['mirror-url'] = 'https://custom-mirror-url.com'; + + // Act + await main.run(); + + // Assert + expect(inputs['mirror-url']).toBeDefined(); + }); + + it('should throw an error if mirror-url is empty', async () => { + // Arrange + inputs['mirror-url'] = ' '; + + // Mock log and setFailed + const logSpy = jest.spyOn(console, 'log').mockImplementation(() => {}); // Mock the log function + + // Act & Assert + expect(() => validateMirrorURL(inputs['mirror-url'])).toThrowError( + 'Mirror URL is empty. Please provide a valid mirror URL.' + ); + }); + }); });