59 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			59 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import { | ||
|  |   getManifest, | ||
|  |   getManifestFromRepo, | ||
|  |   getManifestFromURL | ||
|  | } from '../src/install-python'; | ||
|  | import * as httpm from '@actions/http-client'; | ||
|  | import * as tc from '@actions/tool-cache'; | ||
|  | 
 | ||
|  | jest.mock('@actions/http-client'); | ||
|  | jest.mock('@actions/tool-cache'); | ||
|  | 
 | ||
|  | const mockManifest = [{version: '1.0.0'}]; | ||
|  | 
 | ||
|  | describe('getManifest', () => { | ||
|  |   it('should return manifest from repo', async () => { | ||
|  |     (tc.getManifestFromRepo as jest.Mock).mockResolvedValue(mockManifest); | ||
|  |     const manifest = await getManifest(); | ||
|  |     expect(manifest).toEqual(mockManifest); | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('should return manifest from URL if repo fetch fails', async () => { | ||
|  |     (tc.getManifestFromRepo as jest.Mock).mockRejectedValue( | ||
|  |       new Error('Fetch failed') | ||
|  |     ); | ||
|  |     (httpm.HttpClient.prototype.getJson as jest.Mock).mockResolvedValue({ | ||
|  |       result: mockManifest | ||
|  |     }); | ||
|  |     const manifest = await getManifest(); | ||
|  |     expect(manifest).toEqual(mockManifest); | ||
|  |   }); | ||
|  | }); | ||
|  | 
 | ||
|  | describe('getManifestFromRepo', () => { | ||
|  |   it('should return manifest from repo', async () => { | ||
|  |     (tc.getManifestFromRepo as jest.Mock).mockResolvedValue(mockManifest); | ||
|  |     const manifest = await getManifestFromRepo(); | ||
|  |     expect(manifest).toEqual(mockManifest); | ||
|  |   }); | ||
|  | }); | ||
|  | 
 | ||
|  | describe('getManifestFromURL', () => { | ||
|  |   it('should return manifest from URL', async () => { | ||
|  |     (httpm.HttpClient.prototype.getJson as jest.Mock).mockResolvedValue({ | ||
|  |       result: mockManifest | ||
|  |     }); | ||
|  |     const manifest = await getManifestFromURL(); | ||
|  |     expect(manifest).toEqual(mockManifest); | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('should throw error if unable to get manifest from URL', async () => { | ||
|  |     (httpm.HttpClient.prototype.getJson as jest.Mock).mockResolvedValue({ | ||
|  |       result: null | ||
|  |     }); | ||
|  |     await expect(getManifestFromURL()).rejects.toThrow( | ||
|  |       'Unable to get manifest from' | ||
|  |     ); | ||
|  |   }); | ||
|  | }); |