fix tests

This commit is contained in:
tiefseetauchner 2024-08-15 20:39:57 +02:00
parent 8e130a6e3e
commit 3a03667a44
2 changed files with 24 additions and 18 deletions

View File

@ -190,14 +190,11 @@ describe('checkForDuplicates', () => {
});
});
// TODO: this shouldn't return empty arrays, this should return an error
// Failed duplicate checks should be a reason for panic instead of ignoring
it('returns results when check duplicates retry is failed', async () => {
it('throws error when check duplicates retry is failed', async () => {
vi.mocked(checkBulkUpload).mockRejectedValue(new Error('Network error'));
await expect(checkForDuplicates([testFilePath], { concurrency: 1 })).resolves.toEqual({
duplicates: [],
newFiles: [],
});
await expect(checkForDuplicates([testFilePath], { concurrency: 1 })).rejects.toThrowError(
'An error occurred while checking for duplicates: Network error',
);
});
});

View File

@ -122,20 +122,29 @@ export const checkForDuplicates = async (files: string[], { concurrency, skipHas
const newFiles: string[] = [];
const duplicates: Asset[] = [];
// TODO: Retry 3 times if there is an error
try {
const response = await checkBulkUpload({ assetBulkUploadCheckDto: { assets: results } });
let retries = 0;
const maxRetries = 3;
for (const { id: filepath, assetId, action } of response.results) {
if (action === Action.Accept) {
newFiles.push(filepath);
} else {
// rejects are always duplicates
duplicates.push({ id: assetId as string, filepath });
while (retries < maxRetries) {
try {
const response = await checkBulkUpload({ assetBulkUploadCheckDto: { assets: results } });
for (const { id: filepath, assetId, action } of response.results) {
if (action === Action.Accept) {
newFiles.push(filepath);
} else {
// rejects are always duplicates
duplicates.push({ id: assetId as string, filepath });
}
}
break;
} catch (error: any) {
retries++;
if (retries >= maxRetries) {
throw new Error(`An error occurred while checking for duplicates: ${error.message}`);
}
}
} catch (error: any) {
throw new Error(`An error occurred while checking for duplicates: ${error.message}`);
}
progressBar.stop();