TF-1604: Add requiredCapabilities support TeamMailbox for GetEmailMethod

(cherry picked from commit 3922303e63a8e910511361019a54ea13801e3f92)
This commit is contained in:
HuyNguyen
2023-03-21 23:29:45 +07:00
committed by Dat Vu
parent 890ca4c8cd
commit 8a28225e05
41 changed files with 516 additions and 197 deletions
@@ -21,6 +21,7 @@ import 'package:tmail_ui_user/features/thread/domain/usecases/get_emails_in_mail
import '../../../../fixtures/account_fixtures.dart';
import '../../../../fixtures/email_fixtures.dart';
import '../../../../fixtures/mailbox_fixtures.dart';
import '../../../../fixtures/session_fixtures.dart';
import 'get_emails_in_mailbox_interactor_test.mocks.dart';
@GenerateMocks([ThreadRepository])
@@ -37,6 +38,7 @@ void main() {
test('getEmailsInMailboxInteractor should execute to get all email from cache and network', () async {
when(threadRepository.getAllEmail(
SessionFixtures.aliceSession,
AccountFixtures.aliceAccountId,
limit: UnsignedInt(20),
sort: {}..add(EmailComparator(EmailComparatorProperty.sentAt)..setIsAscending(false)),
@@ -65,6 +67,7 @@ void main() {
}));
final streamStates = getEmailsInMailboxInteractor.execute(
SessionFixtures.aliceSession,
AccountFixtures.aliceAccountId,
limit: UnsignedInt(20),
sort: {}..add(EmailComparator(EmailComparatorProperty.sentAt)..setIsAscending(false)),
@@ -19,6 +19,7 @@ import 'package:tmail_ui_user/features/thread/domain/usecases/refresh_changes_em
import '../../../../fixtures/account_fixtures.dart';
import '../../../../fixtures/email_fixtures.dart';
import '../../../../fixtures/mailbox_fixtures.dart';
import '../../../../fixtures/session_fixtures.dart';
import '../../../../fixtures/state_fixtures.dart';
import 'refresh_changes_emails_in_mailbox_interactor_test.mocks.dart';
@@ -36,6 +37,7 @@ void main() {
test('refreshChangesEmailsInMailboxInteractor should execute to get changes email from cache and network', () async {
when(threadRepository.refreshChanges(
SessionFixtures.aliceSession,
AccountFixtures.aliceAccountId,
StateFixtures.currentEmailState,
sort: <EmailComparator>{}..add(EmailComparator(EmailComparatorProperty.sentAt)..setIsAscending(false)),
@@ -56,6 +58,7 @@ void main() {
}));
final streamStates = refreshChangesEmailsInMailboxInteractor.execute(
SessionFixtures.aliceSession,
AccountFixtures.aliceAccountId,
StateFixtures.currentEmailState,
sort: <EmailComparator>{}..add(EmailComparator(EmailComparatorProperty.sentAt)..setIsAscending(false)),
+102
View File
@@ -0,0 +1,102 @@
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/account/account.dart';
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
import 'package:jmap_dart_client/jmap/core/capability/core_capability.dart';
import 'package:jmap_dart_client/jmap/core/capability/default_capability.dart';
import 'package:jmap_dart_client/jmap/core/capability/mail_capability.dart';
import 'package:jmap_dart_client/jmap/core/capability/mdn_capability.dart';
import 'package:jmap_dart_client/jmap/core/capability/submission_capability.dart';
import 'package:jmap_dart_client/jmap/core/capability/vacation_capability.dart';
import 'package:jmap_dart_client/jmap/core/capability/websocket_capability.dart';
import 'package:jmap_dart_client/jmap/core/id.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/core/sort/collation_identifier.dart';
import 'package:jmap_dart_client/jmap/core/state.dart';
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
import 'package:jmap_dart_client/jmap/core/user_name.dart';
class SessionFixtures {
static final aliceSession = Session(
{
CapabilityIdentifier.jmapSubmission: SubmissionCapability(UnsignedInt(0), {}),
CapabilityIdentifier.jmapCore: CoreCapability(
UnsignedInt(20971520),
UnsignedInt(4),
UnsignedInt(10000000),
UnsignedInt(4),
UnsignedInt(16),
UnsignedInt(500),
UnsignedInt(500),
{CollationIdentifier("i;unicode-casemap")}
),
CapabilityIdentifier.jmapMail: MailCapability(
UnsignedInt(10000000),
null,
UnsignedInt(200),
UnsignedInt(20000000),
{"receivedAt", "sentAt", "size", "from", "to", "subject"},
true
),
CapabilityIdentifier.jmapWebSocket: WebSocketCapability(
true,
Uri.parse('ws://domain.com/jmap/ws')
),
CapabilityIdentifier(Uri.parse('urn:apache:james:params:jmap:mail:quota')): DefaultCapability(<String, dynamic>{}),
CapabilityIdentifier(Uri.parse('urn:apache:james:params:jmap:mail:shares')): DefaultCapability(<String, dynamic>{}),
CapabilityIdentifier.jmapVacationResponse: VacationCapability(),
CapabilityIdentifier.jmapMdn: MdnCapability(),
},
{
AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')): Account(
AccountName('bob@domain.tld'),
true,
false,
{
CapabilityIdentifier.jmapSubmission: SubmissionCapability(UnsignedInt(0), {}),
CapabilityIdentifier.jmapWebSocket: WebSocketCapability(
true,
Uri.parse('ws://domain.com/jmap/ws')
),
CapabilityIdentifier.jmapCore: CoreCapability(
UnsignedInt(20971520),
UnsignedInt(4),
UnsignedInt(10000000),
UnsignedInt(4),
UnsignedInt(16),
UnsignedInt(500),
UnsignedInt(500),
{CollationIdentifier("i;unicode-casemap")}
),
CapabilityIdentifier.jmapMail: MailCapability(
UnsignedInt(10000000),
null,
UnsignedInt(200),
UnsignedInt(20000000),
{"receivedAt", "sentAt", "size", "from", "to", "subject"},
true
),
CapabilityIdentifier(Uri.parse('urn:apache:james:params:jmap:mail:quota')): DefaultCapability(<String, dynamic>{}),
CapabilityIdentifier(Uri.parse('urn:apache:james:params:jmap:mail:shares')): DefaultCapability(<String, dynamic>{}),
CapabilityIdentifier.jmapVacationResponse: VacationCapability(),
CapabilityIdentifier.jmapMdn: MdnCapability()
}
)
},
{
CapabilityIdentifier.jmapSubmission: AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')),
CapabilityIdentifier.jmapWebSocket: AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')),
CapabilityIdentifier.jmapCore: AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')),
CapabilityIdentifier.jmapMail: AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')),
CapabilityIdentifier(Uri.parse('urn:apache:james:params:jmap:mail:quota')): AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')),
CapabilityIdentifier(Uri.parse('urn:apache:james:params:jmap:mail:shares')): AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')),
CapabilityIdentifier.jmapVacationResponse: AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')),
CapabilityIdentifier.jmapMdn: AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')),
},
UserName('bob@domain.tld'),
Uri.parse('http://domain.com/jmap'),
Uri.parse('http://domain.com/download/{accountId}/{blobId}/?type={type}&name={name}'),
Uri.parse('http://domain.com/upload/{accountId}'),
Uri.parse('http://domain.com/eventSource?types={types}&closeAfter={closeafter}&ping={ping}'),
State('2c9f1b12-b35a-43e6-9af2-0106fb53a943')
);
}