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'
 | |
|     );
 | |
|   });
 | |
| });
 |