TF-3416 Handle download attachment in EML previewer on mobile

This commit is contained in:
dab246
2025-01-14 02:52:18 +07:00
committed by Dat H. Pham
parent 27f64d97a8
commit 91f3275a54
9 changed files with 146 additions and 28 deletions
@@ -0,0 +1,63 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart';
void main() {
group('parsingAttachmentByUri', () {
test('should parse a valid URI and return an Attachment object', () {
final uri = Uri.parse(
'attachment:blobId?name=testfile.txt&size=1024&type=text/plain',
);
final attachment = EmailUtils.parsingAttachmentByUri(uri);
expect(attachment, isNotNull);
expect(attachment!.blobId?.value, 'blobId');
expect(attachment.name, 'testfile.txt');
expect(attachment.size?.value, 1024);
expect(attachment.type?.toString(), 'text/plain');
});
test('should return null for an invalid URI', () {
final uri = Uri.parse('https://example.com');
final attachment = EmailUtils.parsingAttachmentByUri(uri);
expect(attachment, isNull);
});
test('should handle missing optional parameters gracefully', () {
final uri = Uri.parse('attachment:blobId?name=testfile.txt');
final attachment = EmailUtils.parsingAttachmentByUri(uri);
expect(attachment, isNotNull);
expect(attachment!.blobId?.value, 'blobId');
expect(attachment.name, 'testfile.txt');
expect(attachment.size, isNull);
expect(attachment.type, isNull);
});
test('should handle invalid size parameter gracefully', () {
final uri = Uri.parse(
'attachment:blobId?name=testfile.txt&size=invalid',
);
final attachment = EmailUtils.parsingAttachmentByUri(uri);
expect(attachment, isNull);
});
test('should handle empty type parameter gracefully', () {
final uri = Uri.parse(
'attachment:blobId?name=testfile.txt&type=',
);
final attachment = EmailUtils.parsingAttachmentByUri(uri);
expect(attachment, isNotNull);
expect(attachment!.blobId?.value, 'blobId');
expect(attachment.name, 'testfile.txt');
expect(attachment.type, isNull);
});
});
}