TF-145 Create and write unit-test for EmailCacheClient

This commit is contained in:
dab246
2021-10-07 01:03:29 +07:00
committed by Dat H. Pham
parent f5874a7e49
commit b27472091b
9 changed files with 533 additions and 0 deletions
@@ -0,0 +1,181 @@
import 'dart:io';
import 'package:flutter_test/flutter_test.dart';
import 'package:tmail_ui_user/features/caching/config/hive_cache_config.dart';
import 'package:tmail_ui_user/features/caching/email_cache_client.dart';
import 'package:tmail_ui_user/features/thread/data/extensions/email_extension.dart';
import '../../fixtures/email_fixtures.dart';
void main() {
late EmailCacheClient _emailCacheClient;
setUpAll(() {
HiveCacheConfig().setUp(cachePath: Directory.current.path);
});
setUp(() {
_emailCacheClient = EmailCacheClient();
});
group('[delete]', () {
test('cache should delete item successfully when cache empty', () async {
await _emailCacheClient.deleteItem(EmailFixtures.email1.id.toString());
final remainingItems = await _emailCacheClient.getAll();
expect(remainingItems.length, equals(0));
});
test('cache should not delete item which not in the list', () async {
await _emailCacheClient.insertItem(
EmailFixtures.email1.id.toString(),
EmailFixtures.email1.toEmailCache());
await _emailCacheClient.insertItem(
EmailFixtures.email2.id.toString(),
EmailFixtures.email2.toEmailCache());
await _emailCacheClient.deleteItem(EmailFixtures.email3.id.toString());
final remainingItems = await _emailCacheClient.getAll();
expect(remainingItems.length, equals(2));
expect(
remainingItems,
containsAll({
EmailFixtures.email1.toEmailCache(),
EmailFixtures.email2.toEmailCache()
}));
});
test('cache should delete item successfully', () async {
await _emailCacheClient.insertItem(
EmailFixtures.email1.id.toString(),
EmailFixtures.email1.toEmailCache());
await _emailCacheClient.insertItem(
EmailFixtures.email2.id.toString(),
EmailFixtures.email2.toEmailCache());
await _emailCacheClient.deleteItem(EmailFixtures.email1.id.toString());
final remainingItems = await _emailCacheClient.getAll();
expect(remainingItems.length, equals(1));
expect(remainingItems.first, equals(EmailFixtures.email2.toEmailCache()));
});
test('cache should not delete item twice', () async {
await _emailCacheClient.insertItem(
EmailFixtures.email1.id.toString(),
EmailFixtures.email1.toEmailCache());
await _emailCacheClient.insertItem(
EmailFixtures.email2.id.toString(),
EmailFixtures.email2.toEmailCache());
await _emailCacheClient.deleteItem(EmailFixtures.email1.id.toString());
await _emailCacheClient.deleteItem(EmailFixtures.email1.id.toString());
final remainingItems = await _emailCacheClient.getAll();
expect(remainingItems.length, equals(1));
expect(remainingItems.first, equals(EmailFixtures.email2.toEmailCache()));
});
});
group('[add]', () {
test('cache should add item when cache empty', () async {
await _emailCacheClient.insertItem(
EmailFixtures.email1.id.toString(),
EmailFixtures.email1.toEmailCache());
final remainingItems = await _emailCacheClient.getAll();
expect(remainingItems.length, equals(1));
expect(remainingItems.first, equals(EmailFixtures.email1.toEmailCache()));
});
test('cache should add item when cache not empty', () async {
await _emailCacheClient.insertItem(
EmailFixtures.email1.id.toString(),
EmailFixtures.email1.toEmailCache());
await _emailCacheClient.insertItem(
EmailFixtures.email2.id.toString(),
EmailFixtures.email2.toEmailCache());
final remainingItems = await _emailCacheClient.getAll();
expect(remainingItems.length, equals(2));
expect(
remainingItems,
containsAll({
EmailFixtures.email1.toEmailCache(),
EmailFixtures.email2.toEmailCache()
}));
});
test('cache should not add item twice', () async {
await _emailCacheClient.insertItem(
EmailFixtures.email1.id.toString(),
EmailFixtures.email1.toEmailCache());
await _emailCacheClient.insertItem(
EmailFixtures.email1.id.toString(),
EmailFixtures.email1.toEmailCache());
final remainingItems = await _emailCacheClient.getAll();
expect(remainingItems.length, equals(1));
expect(
remainingItems,
containsAll({
EmailFixtures.email1.toEmailCache(),
}));
});
});
group('[update]', () {
test('cache should update item when update to iem which not in cache', () async {
await _emailCacheClient.updateItem(
EmailFixtures.email1.id.toString(),
EmailFixtures.email1.toEmailCache());
final remainingItems = await _emailCacheClient.getAll();
expect(remainingItems.length, equals(1));
expect(remainingItems.first, equals(EmailFixtures.email1.toEmailCache()));
});
test('cache should update correctly item', () async {
await _emailCacheClient.insertItem(
EmailFixtures.email1.id.toString(),
EmailFixtures.email1.toEmailCache());
await _emailCacheClient.insertItem(
EmailFixtures.email2.id.toString(),
EmailFixtures.email2.toEmailCache());
await _emailCacheClient.updateItem(
EmailFixtures.email1.id.toString(),
EmailFixtures.email3.toEmailCache());
final remainingItems = await _emailCacheClient.getAll();
expect(remainingItems.length, equals(2));
expect(
remainingItems,
containsAll({
EmailFixtures.email2.toEmailCache(),
EmailFixtures.email3.toEmailCache()
}));
});
});
tearDown(() async {
await _emailCacheClient.deleteBox();
});
}
+66
View File
@@ -0,0 +1,66 @@
import 'package:jmap_dart_client/jmap/core/id.dart';
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
class EmailFixtures {
static final email1 = Email(
EmailId(Id("382312d0-fa5c-11eb-b647-2fef1ee78d9e")),
preview: "Dear QA,I attached image here",
hasAttachment: false,
subject: "test inline image",
from: {EmailAddress("DatPH", "dphamhoang@linagora.com")},
sentAt: UTCDate(DateTime.parse("2021-08-11T04:25:34Z")),
receivedAt: UTCDate(DateTime.parse("2021-08-11T04:25:55Z")),
keywords: {KeyWordIdentifier.emailSeen : true},
to: {EmailAddress("DatVu", "tdvu@linagora.com")},
);
static final email2 = Email(
EmailId(Id("bc8a5320-fa58-11eb-b647-2fef1ee78d9e")),
preview: "This event is about to begin Noti check TimeFriday 23 October 2020 12:00 - 12:30 Europe/Paris (See in Calendar)Location1 thai ha (See in Map)Attendees - User A <usera@qa.open-paas.org> (Organizer) - Lê Nguyễn <userb@qa.open-paas.org> - User C <userc@qa.ope",
hasAttachment: false,
subject: "Notification: Noti check",
from: {EmailAddress(null, "noreply@qa.open-paas.org")},
sentAt: UTCDate(DateTime.parse("2021-08-10T09:45:01Z")),
receivedAt: UTCDate(DateTime.parse("2021-08-11T04:00:59Z")),
to: {EmailAddress("DatVu", "tdvu@facebook.com")},
);
static final email3 = Email(
EmailId(Id("ba7e0860-fa58-11eb-b647-2fef1ee78d9e")),
preview: "This event is about to begin Recurrencr TimeWednesday 26 August 2020 05:30 - 06:30 Europe/Paris (See in Calendar)Location1 thai ha (See in Map)Attendees - userb@qa.open-paas.org <userb@qa.open-paas.org> (Organizer) - User A <usera@qa.open-paas.org> Resourc",
hasAttachment: false,
subject: "Notification: Recurrencr",
from: {EmailAddress(null, "noreply@qa.open-paas.org")},
sentAt: UTCDate(DateTime.parse("2021-08-11T03:00:00Z")),
receivedAt: UTCDate(DateTime.parse("2021-08-11T04:00:55Z")),
keywords: {KeyWordIdentifier.emailFlagged : true},
to: {EmailAddress("DatVu", "tdvu@gmail.com")},
);
static final email4 = Email(
EmailId(Id("d9b3b880-fa6f-11eb-b647-2fef1ee78d9e")),
preview: "alo -- desktop signature",
hasAttachment: true,
subject: "test attachment",
from: {EmailAddress("Haaheoo", "userc@qa.open-paas.org")},
sentAt: UTCDate(DateTime.parse("2021-08-11T06:46:25Z")),
receivedAt: UTCDate(DateTime.parse("2021-08-11T06:46:26Z")),
keywords: {KeyWordIdentifier.emailFlagged : true},
to: {EmailAddress("DatVu", "tdvu@icloud.com")},
);
static final email5 = Email(
EmailId(Id("637f1ef0-fa5d-11eb-b647-2fef1ee78d9e")),
preview: "Dear, test inline Thanks and BRs-- desktop signature",
hasAttachment: false,
subject: "test inline image",
from: {EmailAddress("Haaheoo", "userc@qa.open-paas.org")},
sentAt: UTCDate(DateTime.parse("2021-08-11T04:34:13Z")),
receivedAt: UTCDate(DateTime.parse("2021-08-11T04:34:17Z")),
keywords: {KeyWordIdentifier.emailSeen : true},
to: {EmailAddress("DatVu", "tdvu@yahoo.com")},
);
}