| 
									
										
										
										
											2022-05-25 12:07:29 +02:00
										 |  |  | import * as cache from '@actions/cache'; | 
					
						
							|  |  |  | import * as core from '@actions/core'; | 
					
						
							|  |  |  | import * as glob from '@actions/glob'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import * as cacheRestore from '../src/cache-restore'; | 
					
						
							|  |  |  | import * as cacheUtils from '../src/cache-utils'; | 
					
						
							|  |  |  | import {PackageManagerInfo} from '../src/package-managers'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe('restoreCache', () => { | 
					
						
							|  |  |  |   //Arrange
 | 
					
						
							|  |  |  |   let hashFilesSpy = jest.spyOn(glob, 'hashFiles'); | 
					
						
							|  |  |  |   let getCacheDirectoryPathSpy = jest.spyOn( | 
					
						
							|  |  |  |     cacheUtils, | 
					
						
							|  |  |  |     'getCacheDirectoryPath' | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  |   let restoreCacheSpy = jest.spyOn(cache, 'restoreCache'); | 
					
						
							|  |  |  |   let infoSpy = jest.spyOn(core, 'info'); | 
					
						
							|  |  |  |   let setOutputSpy = jest.spyOn(core, 'setOutput'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-17 18:33:22 +02:00
										 |  |  |   const versionSpec = '1.13.1'; | 
					
						
							| 
									
										
										
										
											2022-05-25 12:07:29 +02:00
										 |  |  |   const packageManager = 'default'; | 
					
						
							|  |  |  |   const cacheDependencyPath = 'path'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   beforeEach(() => { | 
					
						
							|  |  |  |     getCacheDirectoryPathSpy.mockImplementation( | 
					
						
							|  |  |  |       (PackageManager: PackageManagerInfo) => { | 
					
						
							|  |  |  |         return new Promise<string[]>(resolve => { | 
					
						
							|  |  |  |           resolve(['cache_directory_path', 'cache_directory_path']); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should throw if dependency file path is not valid', async () => { | 
					
						
							|  |  |  |     //Arrange
 | 
					
						
							|  |  |  |     hashFilesSpy.mockImplementation((somePath: string) => { | 
					
						
							|  |  |  |       return new Promise<string>(resolve => { | 
					
						
							|  |  |  |         resolve(''); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //Act + Assert
 | 
					
						
							|  |  |  |     expect(async () => { | 
					
						
							| 
									
										
										
										
											2022-10-17 18:33:22 +02:00
										 |  |  |       await cacheRestore.restoreCache( | 
					
						
							|  |  |  |         versionSpec, | 
					
						
							|  |  |  |         packageManager, | 
					
						
							|  |  |  |         cacheDependencyPath | 
					
						
							|  |  |  |       ); | 
					
						
							| 
									
										
										
										
											2022-05-25 12:07:29 +02:00
										 |  |  |     }).rejects.toThrowError( | 
					
						
							|  |  |  |       'Some specified paths were not resolved, unable to cache dependencies.' | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should inform if cache hit is not occured', async () => { | 
					
						
							|  |  |  |     //Arrange
 | 
					
						
							|  |  |  |     hashFilesSpy.mockImplementation((somePath: string) => { | 
					
						
							|  |  |  |       return new Promise<string>(resolve => { | 
					
						
							|  |  |  |         resolve('file_hash'); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     restoreCacheSpy.mockImplementation(() => { | 
					
						
							|  |  |  |       return new Promise<string>(resolve => { | 
					
						
							|  |  |  |         resolve(''); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //Act + Assert
 | 
					
						
							| 
									
										
										
										
											2022-10-17 18:33:22 +02:00
										 |  |  |     await cacheRestore.restoreCache( | 
					
						
							|  |  |  |       versionSpec, | 
					
						
							|  |  |  |       packageManager, | 
					
						
							|  |  |  |       cacheDependencyPath | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2022-05-25 12:07:29 +02:00
										 |  |  |     expect(infoSpy).toBeCalledWith(`Cache is not found`); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should set output if cache hit is occured', async () => { | 
					
						
							|  |  |  |     //Arrange
 | 
					
						
							|  |  |  |     hashFilesSpy.mockImplementation((somePath: string) => { | 
					
						
							|  |  |  |       return new Promise<string>(resolve => { | 
					
						
							|  |  |  |         resolve('file_hash'); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     restoreCacheSpy.mockImplementation(() => { | 
					
						
							|  |  |  |       return new Promise<string>(resolve => { | 
					
						
							|  |  |  |         resolve('cache_key'); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //Act + Assert
 | 
					
						
							| 
									
										
										
										
											2022-10-17 18:33:22 +02:00
										 |  |  |     await cacheRestore.restoreCache( | 
					
						
							|  |  |  |       versionSpec, | 
					
						
							|  |  |  |       packageManager, | 
					
						
							|  |  |  |       cacheDependencyPath | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2022-05-25 12:07:29 +02:00
										 |  |  |     expect(setOutputSpy).toBeCalledWith('cache-hit', true); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }); |