-
Notifications
You must be signed in to change notification settings - Fork 3.7k
fix: Receipt validation not working in drag&drop section of report screen (AFTER REVERT) #73238
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 3 commits
df855f0
6478e8b
e866487
ac733c7
5499059
ee106ad
c09e14d
5b1d6a6
d09d3fd
14d18aa
92435d6
864a678
68ccdc9
a5b538b
653fd23
49f80f4
fd4d7ba
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -552,18 +552,18 @@ const normalizeFileObject = (file: FileObject): Promise<FileObject> => { | |
|
|
||
| type ValidateAttachmentOptions = { | ||
| isValidatingReceipts?: boolean; | ||
| isCheckingMultipleFiles?: boolean; | ||
|
||
| isValidatingMultipleFiles?: boolean; | ||
| }; | ||
|
|
||
| const validateAttachment = (file: FileObject, validationOptions?: ValidateAttachmentOptions) => { | ||
| const maxFileSize = validationOptions?.isValidatingReceipts ? CONST.API_ATTACHMENT_VALIDATIONS.RECEIPT_MAX_SIZE : CONST.API_ATTACHMENT_VALIDATIONS.MAX_SIZE; | ||
|
|
||
| if (validationOptions?.isValidatingReceipts && !isValidReceiptExtension(file)) { | ||
| return validationOptions?.isCheckingMultipleFiles ? CONST.FILE_VALIDATION_ERRORS.WRONG_FILE_TYPE_MULTIPLE : CONST.FILE_VALIDATION_ERRORS.WRONG_FILE_TYPE; | ||
| return validationOptions?.isValidatingMultipleFiles ? CONST.FILE_VALIDATION_ERRORS.WRONG_FILE_TYPE_MULTIPLE : CONST.FILE_VALIDATION_ERRORS.WRONG_FILE_TYPE; | ||
| } | ||
|
|
||
| if (!Str.isImage(file.name ?? '') && !hasHeicOrHeifExtension(file) && (file?.size ?? 0) > maxFileSize) { | ||
| return validationOptions?.isCheckingMultipleFiles ? CONST.FILE_VALIDATION_ERRORS.FILE_TOO_LARGE_MULTIPLE : CONST.FILE_VALIDATION_ERRORS.FILE_TOO_LARGE; | ||
| return validationOptions?.isValidatingMultipleFiles ? CONST.FILE_VALIDATION_ERRORS.FILE_TOO_LARGE_MULTIPLE : CONST.FILE_VALIDATION_ERRORS.FILE_TOO_LARGE; | ||
| } | ||
|
|
||
| if (validationOptions?.isValidatingReceipts && (file?.size ?? 0) < CONST.API_ATTACHMENT_VALIDATIONS.MIN_SIZE) { | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -47,13 +47,13 @@ describe('FileUtils', () => { | |
| describe('validateAttachment', () => { | ||
| it('should not return FILE_TOO_SMALL when validating small attachment', () => { | ||
| const file = createMockFile('file.csv', CONST.API_ATTACHMENT_VALIDATIONS.MIN_SIZE - 1); | ||
| const error = FileUtils.validateAttachment(file, {isCheckingMultipleFiles: false, isValidatingReceipts: false}); | ||
|
||
| const error = FileUtils.validateAttachment(file, {isValidatingMultipleFiles: false, isValidatingReceipts: false}); | ||
| expect(error).not.toBe(CONST.FILE_VALIDATION_ERRORS.FILE_TOO_SMALL); | ||
| }); | ||
|
|
||
| it('should return FILE_TOO_SMALL when validating small receipt', () => { | ||
| const file = createMockFile('receipt.jpg', CONST.API_ATTACHMENT_VALIDATIONS.MIN_SIZE - 1); | ||
| const error = FileUtils.validateAttachment(file, {isCheckingMultipleFiles: false, isValidatingReceipts: true}); | ||
| const error = FileUtils.validateAttachment(file, {isValidatingMultipleFiles: false, isValidatingReceipts: true}); | ||
| expect(error).toBe(CONST.FILE_VALIDATION_ERRORS.FILE_TOO_SMALL); | ||
| }); | ||
|
|
||
|
|
@@ -65,31 +65,31 @@ describe('FileUtils', () => { | |
|
|
||
| it('should return FILE_TOO_LARGE_MULTIPLE when checking multiple files', () => { | ||
| const file = createMockFile('file.pdf', CONST.API_ATTACHMENT_VALIDATIONS.MAX_SIZE + 1); | ||
| const error = FileUtils.validateAttachment(file, {isCheckingMultipleFiles: true, isValidatingReceipts: false}); | ||
| const error = FileUtils.validateAttachment(file, {isValidatingMultipleFiles: true, isValidatingReceipts: false}); | ||
| expect(error).toBe(CONST.FILE_VALIDATION_ERRORS.FILE_TOO_LARGE_MULTIPLE); | ||
| }); | ||
|
|
||
| it('should return WRONG_FILE_TYPE for invalid receipt extension', () => { | ||
| const file = createMockFile('receipt.exe', CONST.API_ATTACHMENT_VALIDATIONS.RECEIPT_MAX_SIZE - 1); | ||
| const error = FileUtils.validateAttachment(file, {isCheckingMultipleFiles: false, isValidatingReceipts: true}); | ||
| const error = FileUtils.validateAttachment(file, {isValidatingMultipleFiles: false, isValidatingReceipts: true}); | ||
| expect(error).toBe(CONST.FILE_VALIDATION_ERRORS.WRONG_FILE_TYPE); | ||
| }); | ||
|
|
||
| it('should prioritize WRONG_FILE_TYPE over FILE_TOO_LARGE for receipts', () => { | ||
| const file = createMockFile('receipt.exe', CONST.API_ATTACHMENT_VALIDATIONS.RECEIPT_MAX_SIZE + 10); | ||
| const error = FileUtils.validateAttachment(file, {isCheckingMultipleFiles: false, isValidatingReceipts: true}); | ||
| const error = FileUtils.validateAttachment(file, {isValidatingMultipleFiles: false, isValidatingReceipts: true}); | ||
| expect(error).toBe(CONST.FILE_VALIDATION_ERRORS.WRONG_FILE_TYPE); | ||
| }); | ||
|
|
||
| it('should return WRONG_FILE_TYPE_MULTIPLE when checking multiple invalid receipt files', () => { | ||
| const file = createMockFile('receipt.exe', CONST.API_ATTACHMENT_VALIDATIONS.RECEIPT_MAX_SIZE + 10); | ||
| const error = FileUtils.validateAttachment(file, {isCheckingMultipleFiles: true, isValidatingReceipts: true}); | ||
| const error = FileUtils.validateAttachment(file, {isValidatingMultipleFiles: true, isValidatingReceipts: true}); | ||
| expect(error).toBe(CONST.FILE_VALIDATION_ERRORS.WRONG_FILE_TYPE_MULTIPLE); | ||
| }); | ||
|
|
||
| it('should return empty string for valid image receipt', () => { | ||
| const file = createMockFile('receipt.jpg', CONST.API_ATTACHMENT_VALIDATIONS.RECEIPT_MAX_SIZE - 1); | ||
| const error = FileUtils.validateAttachment(file, {isCheckingMultipleFiles: false, isValidatingReceipts: true}); | ||
| const error = FileUtils.validateAttachment(file, {isValidatingMultipleFiles: false, isValidatingReceipts: true}); | ||
| expect(error).toBe(''); | ||
| }); | ||
| }); | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.