TF-145 Implement LoadMoreEmails in ThreadView
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:core/core.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
||||
@@ -45,8 +46,9 @@ void main() {
|
||||
|
||||
final states = await streamStates.toList();
|
||||
|
||||
expect(states.length, equals(1));
|
||||
expect(states.length, equals(2));
|
||||
expect(states, containsAllInOrder({
|
||||
Right(RefreshingState()),
|
||||
Right(GetAllMailboxSuccess(
|
||||
defaultMailboxList: {
|
||||
MailboxFixtures.inboxMailbox.toPresentationMailbox(),
|
||||
|
||||
@@ -38,20 +38,21 @@ void main() {
|
||||
when(threadRepository.getAllEmail(
|
||||
AccountFixtures.aliceAccountId,
|
||||
limit: UnsignedInt(20),
|
||||
position: 0,
|
||||
sort: Set()..add(EmailComparator(EmailComparatorProperty.sentAt)..setIsAscending(false)),
|
||||
filter: EmailFilterCondition(inMailbox: MailboxFixtures.inboxMailbox.id),
|
||||
emailFilter: EmailFilter(
|
||||
filter: EmailFilterCondition(inMailbox: MailboxFixtures.inboxMailbox.id),
|
||||
mailboxId: MailboxFixtures.inboxMailbox.id,
|
||||
),
|
||||
propertiesCreated: ThreadConstants.propertiesDefault,
|
||||
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault,
|
||||
inMailboxId: MailboxFixtures.inboxMailbox.id
|
||||
)).thenAnswer((_) => Stream.fromIterable({
|
||||
EmailResponse(
|
||||
EmailsResponse(
|
||||
emailList: {
|
||||
EmailFixtures.email1,
|
||||
EmailFixtures.email2
|
||||
}.toList(),
|
||||
state: jmap.State('s1')),
|
||||
EmailResponse(
|
||||
EmailsResponse(
|
||||
emailList: {
|
||||
EmailFixtures.email1,
|
||||
EmailFixtures.email2,
|
||||
@@ -65,12 +66,13 @@ void main() {
|
||||
final streamStates = getEmailsInMailboxInteractor.execute(
|
||||
AccountFixtures.aliceAccountId,
|
||||
limit: UnsignedInt(20),
|
||||
position: 0,
|
||||
sort: Set()..add(EmailComparator(EmailComparatorProperty.sentAt)..setIsAscending(false)),
|
||||
filter: EmailFilterCondition(inMailbox: MailboxFixtures.inboxMailbox.id),
|
||||
emailFilter: EmailFilter(
|
||||
filter: EmailFilterCondition(inMailbox: MailboxFixtures.inboxMailbox.id),
|
||||
mailboxId: MailboxFixtures.inboxMailbox.id,
|
||||
),
|
||||
propertiesCreated: ThreadConstants.propertiesDefault,
|
||||
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault,
|
||||
inMailboxId: MailboxFixtures.inboxMailbox.id);
|
||||
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault);
|
||||
|
||||
final states = await streamStates.toList();
|
||||
|
||||
|
||||
+34
-20
@@ -5,13 +5,14 @@
|
||||
import 'dart:async' as _i3;
|
||||
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart' as _i5;
|
||||
import 'package:jmap_dart_client/jmap/core/filter/filter.dart' as _i8;
|
||||
import 'package:jmap_dart_client/jmap/core/filter/filter.dart' as _i12;
|
||||
import 'package:jmap_dart_client/jmap/core/properties/properties.dart' as _i9;
|
||||
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart' as _i7;
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart' as _i11;
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart' as _i10;
|
||||
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart' as _i6;
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i10;
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i11;
|
||||
import 'package:mockito/mockito.dart' as _i1;
|
||||
import 'package:model/email/email_filter.dart' as _i8;
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart'
|
||||
as _i4;
|
||||
import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart'
|
||||
@@ -32,35 +33,31 @@ class MockThreadRepository extends _i1.Mock implements _i2.ThreadRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
_i3.Stream<_i4.EmailResponse> getAllEmail(_i5.AccountId? accountId,
|
||||
{int? position,
|
||||
_i6.UnsignedInt? limit,
|
||||
_i3.Stream<_i4.EmailsResponse> getAllEmail(_i5.AccountId? accountId,
|
||||
{_i6.UnsignedInt? limit,
|
||||
Set<_i7.Comparator>? sort,
|
||||
_i8.Filter? filter,
|
||||
_i8.EmailFilter? emailFilter,
|
||||
_i9.Properties? propertiesCreated,
|
||||
_i9.Properties? propertiesUpdated,
|
||||
_i10.MailboxId? inMailboxId}) =>
|
||||
_i9.Properties? propertiesUpdated}) =>
|
||||
(super.noSuchMethod(
|
||||
Invocation.method(#getAllEmail, [
|
||||
accountId
|
||||
], {
|
||||
#position: position,
|
||||
#limit: limit,
|
||||
#sort: sort,
|
||||
#filter: filter,
|
||||
#emailFilter: emailFilter,
|
||||
#propertiesCreated: propertiesCreated,
|
||||
#propertiesUpdated: propertiesUpdated,
|
||||
#inMailboxId: inMailboxId
|
||||
#propertiesUpdated: propertiesUpdated
|
||||
}),
|
||||
returnValue: Stream<_i4.EmailResponse>.empty())
|
||||
as _i3.Stream<_i4.EmailResponse>);
|
||||
returnValue: Stream<_i4.EmailsResponse>.empty())
|
||||
as _i3.Stream<_i4.EmailsResponse>);
|
||||
@override
|
||||
_i3.Stream<_i4.EmailResponse> refreshChanges(
|
||||
_i5.AccountId? accountId, _i11.State? currentState,
|
||||
_i3.Stream<_i4.EmailsResponse> refreshChanges(
|
||||
_i5.AccountId? accountId, _i10.State? currentState,
|
||||
{Set<_i7.Comparator>? sort,
|
||||
_i9.Properties? propertiesCreated,
|
||||
_i9.Properties? propertiesUpdated,
|
||||
_i10.MailboxId? inMailboxId}) =>
|
||||
_i11.MailboxId? inMailboxId}) =>
|
||||
(super.noSuchMethod(
|
||||
Invocation.method(#refreshChanges, [
|
||||
accountId,
|
||||
@@ -71,6 +68,23 @@ class MockThreadRepository extends _i1.Mock implements _i2.ThreadRepository {
|
||||
#propertiesUpdated: propertiesUpdated,
|
||||
#inMailboxId: inMailboxId
|
||||
}),
|
||||
returnValue: Stream<_i4.EmailResponse>.empty())
|
||||
as _i3.Stream<_i4.EmailResponse>);
|
||||
returnValue: Stream<_i4.EmailsResponse>.empty())
|
||||
as _i3.Stream<_i4.EmailsResponse>);
|
||||
@override
|
||||
_i3.Stream<_i4.EmailsResponse> loadMoreEmails(_i5.AccountId? accountId,
|
||||
{_i6.UnsignedInt? limit,
|
||||
Set<_i7.Comparator>? sort,
|
||||
_i12.Filter? filter,
|
||||
_i9.Properties? properties}) =>
|
||||
(super.noSuchMethod(
|
||||
Invocation.method(#loadMoreEmails, [
|
||||
accountId
|
||||
], {
|
||||
#limit: limit,
|
||||
#sort: sort,
|
||||
#filter: filter,
|
||||
#properties: properties
|
||||
}),
|
||||
returnValue: Stream<_i4.EmailsResponse>.empty())
|
||||
as _i3.Stream<_i4.EmailsResponse>);
|
||||
}
|
||||
|
||||
+4
-2
@@ -1,5 +1,6 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:core/core.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_comparator.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_comparator_property.dart';
|
||||
import 'package:model/model.dart';
|
||||
@@ -41,7 +42,7 @@ void main() {
|
||||
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault,
|
||||
inMailboxId: MailboxFixtures.inboxMailbox.id
|
||||
)).thenAnswer((_) => Stream.fromIterable({
|
||||
EmailResponse(
|
||||
EmailsResponse(
|
||||
emailList: {
|
||||
EmailFixtures.email1,
|
||||
EmailFixtures.email2,
|
||||
@@ -62,8 +63,9 @@ void main() {
|
||||
|
||||
final states = await streamStates.toList();
|
||||
|
||||
expect(states.length, equals(1));
|
||||
expect(states.length, equals(2));
|
||||
expect(states, containsAllInOrder({
|
||||
Right(RefreshingState()),
|
||||
Right(GetAllEmailSuccess(
|
||||
emailList: {
|
||||
EmailFixtures.email1.toPresentationEmail(),
|
||||
|
||||
+34
-20
@@ -5,13 +5,14 @@
|
||||
import 'dart:async' as _i3;
|
||||
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart' as _i5;
|
||||
import 'package:jmap_dart_client/jmap/core/filter/filter.dart' as _i8;
|
||||
import 'package:jmap_dart_client/jmap/core/filter/filter.dart' as _i12;
|
||||
import 'package:jmap_dart_client/jmap/core/properties/properties.dart' as _i9;
|
||||
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart' as _i7;
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart' as _i11;
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart' as _i10;
|
||||
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart' as _i6;
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i10;
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i11;
|
||||
import 'package:mockito/mockito.dart' as _i1;
|
||||
import 'package:model/email/email_filter.dart' as _i8;
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart'
|
||||
as _i4;
|
||||
import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart'
|
||||
@@ -32,35 +33,31 @@ class MockThreadRepository extends _i1.Mock implements _i2.ThreadRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
_i3.Stream<_i4.EmailResponse> getAllEmail(_i5.AccountId? accountId,
|
||||
{int? position,
|
||||
_i6.UnsignedInt? limit,
|
||||
_i3.Stream<_i4.EmailsResponse> getAllEmail(_i5.AccountId? accountId,
|
||||
{_i6.UnsignedInt? limit,
|
||||
Set<_i7.Comparator>? sort,
|
||||
_i8.Filter? filter,
|
||||
_i8.EmailFilter? emailFilter,
|
||||
_i9.Properties? propertiesCreated,
|
||||
_i9.Properties? propertiesUpdated,
|
||||
_i10.MailboxId? inMailboxId}) =>
|
||||
_i9.Properties? propertiesUpdated}) =>
|
||||
(super.noSuchMethod(
|
||||
Invocation.method(#getAllEmail, [
|
||||
accountId
|
||||
], {
|
||||
#position: position,
|
||||
#limit: limit,
|
||||
#sort: sort,
|
||||
#filter: filter,
|
||||
#emailFilter: emailFilter,
|
||||
#propertiesCreated: propertiesCreated,
|
||||
#propertiesUpdated: propertiesUpdated,
|
||||
#inMailboxId: inMailboxId
|
||||
#propertiesUpdated: propertiesUpdated
|
||||
}),
|
||||
returnValue: Stream<_i4.EmailResponse>.empty())
|
||||
as _i3.Stream<_i4.EmailResponse>);
|
||||
returnValue: Stream<_i4.EmailsResponse>.empty())
|
||||
as _i3.Stream<_i4.EmailsResponse>);
|
||||
@override
|
||||
_i3.Stream<_i4.EmailResponse> refreshChanges(
|
||||
_i5.AccountId? accountId, _i11.State? currentState,
|
||||
_i3.Stream<_i4.EmailsResponse> refreshChanges(
|
||||
_i5.AccountId? accountId, _i10.State? currentState,
|
||||
{Set<_i7.Comparator>? sort,
|
||||
_i9.Properties? propertiesCreated,
|
||||
_i9.Properties? propertiesUpdated,
|
||||
_i10.MailboxId? inMailboxId}) =>
|
||||
_i11.MailboxId? inMailboxId}) =>
|
||||
(super.noSuchMethod(
|
||||
Invocation.method(#refreshChanges, [
|
||||
accountId,
|
||||
@@ -71,6 +68,23 @@ class MockThreadRepository extends _i1.Mock implements _i2.ThreadRepository {
|
||||
#propertiesUpdated: propertiesUpdated,
|
||||
#inMailboxId: inMailboxId
|
||||
}),
|
||||
returnValue: Stream<_i4.EmailResponse>.empty())
|
||||
as _i3.Stream<_i4.EmailResponse>);
|
||||
returnValue: Stream<_i4.EmailsResponse>.empty())
|
||||
as _i3.Stream<_i4.EmailsResponse>);
|
||||
@override
|
||||
_i3.Stream<_i4.EmailsResponse> loadMoreEmails(_i5.AccountId? accountId,
|
||||
{_i6.UnsignedInt? limit,
|
||||
Set<_i7.Comparator>? sort,
|
||||
_i12.Filter? filter,
|
||||
_i9.Properties? properties}) =>
|
||||
(super.noSuchMethod(
|
||||
Invocation.method(#loadMoreEmails, [
|
||||
accountId
|
||||
], {
|
||||
#limit: limit,
|
||||
#sort: sort,
|
||||
#filter: filter,
|
||||
#properties: properties
|
||||
}),
|
||||
returnValue: Stream<_i4.EmailsResponse>.empty())
|
||||
as _i3.Stream<_i4.EmailsResponse>);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user