forked from Cutlery/immich
		
	improve tests
This commit is contained in:
		
							parent
							
								
									247429c3e4
								
							
						
					
					
						commit
						0803458d40
					
				| @ -242,27 +242,6 @@ describe(LibraryService.name, () => { | ||||
|       }); | ||||
|     }); | ||||
| 
 | ||||
|     it('should set missing assets offline', async () => { | ||||
|       const mockLibraryJob: ILibraryRefreshJob = { | ||||
|         id: libraryStub.externalLibrary1.id, | ||||
|         refreshModifiedFiles: false, | ||||
|         refreshAllFiles: false, | ||||
|       }; | ||||
| 
 | ||||
|       libraryMock.get.mockResolvedValue(libraryStub.externalLibrary1); | ||||
|       storageMock.crawl.mockResolvedValue([]); | ||||
|       assetMock.getLibraryAssetPaths.mockResolvedValue({ | ||||
|         items: [assetStub.image], | ||||
|         hasNextPage: false, | ||||
|       }); | ||||
| 
 | ||||
|       await sut.handleQueueAssetRefresh(mockLibraryJob); | ||||
| 
 | ||||
|       expect(assetMock.updateAll).toHaveBeenCalledWith([assetStub.image.id], { isOffline: true }); | ||||
|       expect(assetMock.updateAll).not.toHaveBeenCalledWith(expect.anything(), { isOffline: false }); | ||||
|       expect(jobMock.queueAll).not.toHaveBeenCalled(); | ||||
|     }); | ||||
| 
 | ||||
|     it('should set crawled assets that were previously offline back online', async () => { | ||||
|       const mockLibraryJob: ILibraryRefreshJob = { | ||||
|         id: libraryStub.externalLibrary1.id, | ||||
| @ -1445,6 +1424,45 @@ describe(LibraryService.name, () => { | ||||
|         ], | ||||
|       ]); | ||||
|     }); | ||||
| 
 | ||||
|     it('should queue an offline file scan', async () => { | ||||
|       libraryMock.get.mockResolvedValue(libraryStub.externalLibrary1); | ||||
| 
 | ||||
|       await sut.queueScan(authStub.admin, libraryStub.externalLibrary1.id, { checkForOffline: true }); | ||||
| 
 | ||||
|       expect(jobMock.queue.mock.calls).toEqual([ | ||||
|         [ | ||||
|           { | ||||
|             name: JobName.LIBRARY_SCAN_OFFLINE, | ||||
|             data: { | ||||
|               id: libraryStub.externalLibrary1.id, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|       ]); | ||||
|     }); | ||||
| 
 | ||||
|     it('should error when queuing a scan with checkOffline and refreshAll', async () => { | ||||
|       libraryMock.get.mockResolvedValue(libraryStub.externalLibrary1); | ||||
| 
 | ||||
|       await expect( | ||||
|         sut.queueScan(authStub.admin, libraryStub.externalLibrary1.id, { | ||||
|           refreshAllFiles: true, | ||||
|           checkForOffline: true, | ||||
|         }), | ||||
|       ).rejects.toBeInstanceOf(BadRequestException); | ||||
|     }); | ||||
| 
 | ||||
|     it('should error when queuing a scan with checkOffline and refreshModified', async () => { | ||||
|       libraryMock.get.mockResolvedValue(libraryStub.externalLibrary1); | ||||
| 
 | ||||
|       await expect( | ||||
|         sut.queueScan(authStub.admin, libraryStub.externalLibrary1.id, { | ||||
|           refreshModifiedFiles: true, | ||||
|           checkForOffline: true, | ||||
|         }), | ||||
|       ).rejects.toBeInstanceOf(BadRequestException); | ||||
|     }); | ||||
|   }); | ||||
| 
 | ||||
|   describe('queueEmptyTrash', () => { | ||||
|  | ||||
| @ -656,14 +656,6 @@ export class LibraryService extends EventEmitter { | ||||
|     return true; | ||||
|   } | ||||
| 
 | ||||
|   // Check if a given path is in a user's external path. Both arguments are assumed to be normalized
 | ||||
|   private isInExternalPath(filePath: string, externalPath: string | null): boolean { | ||||
|     if (externalPath === null) { | ||||
|       return false; | ||||
|     } | ||||
|     return filePath.startsWith(externalPath); | ||||
|   } | ||||
| 
 | ||||
|   async handleQueueAssetRefresh(job: ILibraryRefreshJob): Promise<boolean> { | ||||
|     const library = await this.repository.get(job.id); | ||||
|     if (!library || library.type !== LibraryType.EXTERNAL) { | ||||
|  | ||||
| @ -146,26 +146,6 @@ export class LibraryRepository implements ILibraryRepository { | ||||
|     }; | ||||
|   } | ||||
| 
 | ||||
|   @GenerateSql({ params: [DummyValue.UUID] }) | ||||
|   async getOnlineAssetPaths(libraryId: string): Promise<string[]> { | ||||
|     // Return all non-offline asset paths for a given library
 | ||||
|     const rawResults = await this.repository | ||||
|       .createQueryBuilder('library') | ||||
|       .innerJoinAndSelect('library.assets', 'assets') | ||||
|       .where('library.id = :id', { id: libraryId }) | ||||
|       .andWhere('assets.isOffline = false') | ||||
|       .select('assets.originalPath') | ||||
|       .getRawMany(); | ||||
| 
 | ||||
|     const results: string[] = []; | ||||
| 
 | ||||
|     for (const rawPath of rawResults) { | ||||
|       results.push(rawPath.assets_originalPath); | ||||
|     } | ||||
| 
 | ||||
|     return results; | ||||
|   } | ||||
| 
 | ||||
|   @GenerateSql({ params: [DummyValue.UUID] }) | ||||
|   async getAssetIds(libraryId: string, withDeleted = false): Promise<string[]> { | ||||
|     let query = this.repository | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user