TF-1718 Check List-Unsubscribe in header of email & parsing to EmailUnsubscribe

(cherry picked from commit 9dc046a951e5198461178860c8ebe4bedff9062f)
This commit is contained in:
dab246
2023-11-15 19:55:38 +07:00
committed by Dat Vu
parent 7cf5c08ef5
commit 94909470af
8 changed files with 168 additions and 18 deletions
@@ -0,0 +1,68 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart';
void main() {
group('parsing email unsubscribe test', () {
test('parsingUnsubscribe returns null for empty input', () {
expect(EmailUtils.parsingUnsubscribe(''), isNull);
});
test('parsingUnsubscribe returns null for input without links', () {
expect(EmailUtils.parsingUnsubscribe('Some text without links'), isNull);
});
test('parsingUnsubscribe parses mailto links', () {
final emailUnsubscribe = EmailUtils.parsingUnsubscribe('<mailto:user@example.com>');
expect(emailUnsubscribe, isNotNull);
expect(emailUnsubscribe!.mailtoLinks, contains('mailto:user@example.com'));
expect(emailUnsubscribe.httpLinks, isEmpty);
});
test('parsingUnsubscribe parses http links', () {
final emailUnsubscribe = EmailUtils.parsingUnsubscribe('<http://example.com>');
expect(emailUnsubscribe, isNotNull);
expect(emailUnsubscribe!.httpLinks, contains('http://example.com'));
expect(emailUnsubscribe.mailtoLinks, isEmpty);
});
test('parsingUnsubscribe parses https links', () {
final emailUnsubscribe = EmailUtils.parsingUnsubscribe('<https://example.com>');
expect(emailUnsubscribe, isNotNull);
expect(emailUnsubscribe!.httpLinks, contains('https://example.com'));
expect(emailUnsubscribe.mailtoLinks, isEmpty);
});
test('parsingUnsubscribe parses both http and https links', () {
final emailUnsubscribe = EmailUtils.parsingUnsubscribe('<http://example.com>, <https://example.com>');
expect(emailUnsubscribe, isNotNull);
expect(emailUnsubscribe!.httpLinks, containsAll(['http://example.com', 'https://example.com']));
expect(emailUnsubscribe.mailtoLinks, isEmpty);
});
test('parsingUnsubscribe parses both mailto and http links', () {
final emailUnsubscribe = EmailUtils.parsingUnsubscribe('<mailto:support@example.com>, <http://example.com>');
expect(emailUnsubscribe, isNotNull);
expect(emailUnsubscribe!.mailtoLinks, contains('mailto:support@example.com'));
expect(emailUnsubscribe.httpLinks, contains('http://example.com'));
});
test('parsingUnsubscribe parses both mailto and http links without <>', () {
final emailUnsubscribe = EmailUtils.parsingUnsubscribe('mailto:support@example.com, http://example.com');
expect(emailUnsubscribe, isNotNull);
expect(emailUnsubscribe!.mailtoLinks, contains('mailto:support@example.com'));
expect(emailUnsubscribe.httpLinks, contains('http://example.com'));
});
test('parsingUnsubscribe parses more mailto and http links', () {
final emailUnsubscribe = EmailUtils.parsingUnsubscribe('<mailto:support@example.com>, <http://example.com>, <http://example2.com>, <http://example3.com>, <mailto:support@example2.com>, <mailto:support@example3.com>');
expect(emailUnsubscribe, isNotNull);
expect(emailUnsubscribe!.mailtoLinks, containsAll(['mailto:support@example.com', 'mailto:support@example2.com', 'mailto:support@example3.com']));
expect(emailUnsubscribe.httpLinks, containsAll(['http://example.com', 'http://example2.com', 'http://example3.com']));
});
test('parsingUnsubscribe returns null for input with invalid links', () {
expect(EmailUtils.parsingUnsubscribe('Invalid link: invalid'), isNull);
});
});
}