TF-145 Add unit-test for RefreshChangesEmailsInMailboxInteractor
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:core/core.dart';
|
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
||||||
@@ -46,9 +45,8 @@ void main() {
|
|||||||
|
|
||||||
final states = await streamStates.toList();
|
final states = await streamStates.toList();
|
||||||
|
|
||||||
expect(states.length, equals(2));
|
expect(states.length, equals(1));
|
||||||
expect(states, containsAllInOrder({
|
expect(states, containsAllInOrder({
|
||||||
Right(LoadingState()),
|
|
||||||
Right(GetAllMailboxSuccess(
|
Right(GetAllMailboxSuccess(
|
||||||
defaultMailboxList: {
|
defaultMailboxList: {
|
||||||
MailboxFixtures.inboxMailbox.toPresentationMailbox(),
|
MailboxFixtures.inboxMailbox.toPresentationMailbox(),
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ 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 _i8;
|
||||||
import 'package:jmap_dart_client/jmap/core/properties/properties.dart' as _i9;
|
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/sort/comparator.dart' as _i7;
|
||||||
|
import 'package:jmap_dart_client/jmap/core/state.dart' as _i11;
|
||||||
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart' as _i6;
|
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 _i10;
|
||||||
import 'package:mockito/mockito.dart' as _i1;
|
import 'package:mockito/mockito.dart' as _i1;
|
||||||
@@ -53,4 +54,23 @@ class MockThreadRepository extends _i1.Mock implements _i2.ThreadRepository {
|
|||||||
}),
|
}),
|
||||||
returnValue: Stream<_i4.EmailResponse>.empty())
|
returnValue: Stream<_i4.EmailResponse>.empty())
|
||||||
as _i3.Stream<_i4.EmailResponse>);
|
as _i3.Stream<_i4.EmailResponse>);
|
||||||
|
@override
|
||||||
|
_i3.Stream<_i4.EmailResponse> refreshChanges(
|
||||||
|
_i5.AccountId? accountId, _i11.State? currentState,
|
||||||
|
{Set<_i7.Comparator>? sort,
|
||||||
|
_i9.Properties? propertiesCreated,
|
||||||
|
_i9.Properties? propertiesUpdated,
|
||||||
|
_i10.MailboxId? inMailboxId}) =>
|
||||||
|
(super.noSuchMethod(
|
||||||
|
Invocation.method(#refreshChanges, [
|
||||||
|
accountId,
|
||||||
|
currentState
|
||||||
|
], {
|
||||||
|
#sort: sort,
|
||||||
|
#propertiesCreated: propertiesCreated,
|
||||||
|
#propertiesUpdated: propertiesUpdated,
|
||||||
|
#inMailboxId: inMailboxId
|
||||||
|
}),
|
||||||
|
returnValue: Stream<_i4.EmailResponse>.empty())
|
||||||
|
as _i3.Stream<_i4.EmailResponse>);
|
||||||
}
|
}
|
||||||
|
|||||||
+80
@@ -0,0 +1,80 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
|
||||||
|
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';
|
||||||
|
import 'package:dartz/dartz.dart';
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
||||||
|
import 'package:mockito/annotations.dart';
|
||||||
|
import 'package:mockito/mockito.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread/domain/constants/thread_constants.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread/domain/state/get_all_email_state.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor.dart';
|
||||||
|
|
||||||
|
import '../../../../fixtures/account_fixtures.dart';
|
||||||
|
import '../../../../fixtures/email_fixtures.dart';
|
||||||
|
import '../../../../fixtures/mailbox_fixtures.dart';
|
||||||
|
import '../../../../fixtures/state_fixtures.dart';
|
||||||
|
import 'refresh_changes_emails_in_mailbox_interactor_test.mocks.dart';
|
||||||
|
|
||||||
|
@GenerateMocks([ThreadRepository])
|
||||||
|
void main() {
|
||||||
|
late ThreadRepository threadRepository;
|
||||||
|
late RefreshChangesEmailsInMailboxInteractor refreshChangesEmailsInMailboxInteractor;
|
||||||
|
|
||||||
|
group('[RefreshChangesEmailsInMailboxInteractor]', () {
|
||||||
|
|
||||||
|
setUp(() {
|
||||||
|
threadRepository = MockThreadRepository();
|
||||||
|
refreshChangesEmailsInMailboxInteractor = RefreshChangesEmailsInMailboxInteractor(threadRepository);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('refreshChangesEmailsInMailboxInteractor should execute to get changes email from cache and network', () async {
|
||||||
|
when(threadRepository.refreshChanges(
|
||||||
|
AccountFixtures.aliceAccountId,
|
||||||
|
StateFixtures.currentEmailState,
|
||||||
|
sort: Set()..add(EmailComparator(EmailComparatorProperty.sentAt)..setIsAscending(false)),
|
||||||
|
propertiesCreated: ThreadConstants.propertiesDefault,
|
||||||
|
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault,
|
||||||
|
inMailboxId: MailboxFixtures.inboxMailbox.id
|
||||||
|
)).thenAnswer((_) => Stream.fromIterable({
|
||||||
|
EmailResponse(
|
||||||
|
emailList: {
|
||||||
|
EmailFixtures.email1,
|
||||||
|
EmailFixtures.email2,
|
||||||
|
EmailFixtures.email3,
|
||||||
|
EmailFixtures.email4,
|
||||||
|
EmailFixtures.email5,
|
||||||
|
}.toList(),
|
||||||
|
state: jmap.State('s1'))
|
||||||
|
}));
|
||||||
|
|
||||||
|
final streamStates = refreshChangesEmailsInMailboxInteractor.execute(
|
||||||
|
AccountFixtures.aliceAccountId,
|
||||||
|
StateFixtures.currentEmailState,
|
||||||
|
sort: Set()..add(EmailComparator(EmailComparatorProperty.sentAt)..setIsAscending(false)),
|
||||||
|
propertiesCreated: ThreadConstants.propertiesDefault,
|
||||||
|
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault,
|
||||||
|
inMailboxId: MailboxFixtures.inboxMailbox.id);
|
||||||
|
|
||||||
|
final states = await streamStates.toList();
|
||||||
|
|
||||||
|
expect(states.length, equals(1));
|
||||||
|
expect(states, containsAllInOrder({
|
||||||
|
Right(GetAllEmailSuccess(
|
||||||
|
emailList: {
|
||||||
|
EmailFixtures.email1.toPresentationEmail(),
|
||||||
|
EmailFixtures.email2.toPresentationEmail(),
|
||||||
|
EmailFixtures.email3.toPresentationEmail(),
|
||||||
|
EmailFixtures.email4.toPresentationEmail(),
|
||||||
|
EmailFixtures.email5.toPresentationEmail(),
|
||||||
|
}.toList(),
|
||||||
|
currentEmailState: jmap.State('s1'))
|
||||||
|
)
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
+76
@@ -0,0 +1,76 @@
|
|||||||
|
// Mocks generated by Mockito 5.0.10 from annotations
|
||||||
|
// in tmail_ui_user/test/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor_test.dart.
|
||||||
|
// Do not manually edit this file.
|
||||||
|
|
||||||
|
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/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/unsigned_int.dart' as _i6;
|
||||||
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i10;
|
||||||
|
import 'package:mockito/mockito.dart' as _i1;
|
||||||
|
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'
|
||||||
|
as _i2;
|
||||||
|
|
||||||
|
// ignore_for_file: avoid_redundant_argument_values
|
||||||
|
// ignore_for_file: comment_references
|
||||||
|
// ignore_for_file: invalid_use_of_visible_for_testing_member
|
||||||
|
// ignore_for_file: prefer_const_constructors
|
||||||
|
// ignore_for_file: unnecessary_parenthesis
|
||||||
|
|
||||||
|
/// A class which mocks [ThreadRepository].
|
||||||
|
///
|
||||||
|
/// See the documentation for Mockito's code generation for more information.
|
||||||
|
class MockThreadRepository extends _i1.Mock implements _i2.ThreadRepository {
|
||||||
|
MockThreadRepository() {
|
||||||
|
_i1.throwOnMissingStub(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
_i3.Stream<_i4.EmailResponse> getAllEmail(_i5.AccountId? accountId,
|
||||||
|
{int? position,
|
||||||
|
_i6.UnsignedInt? limit,
|
||||||
|
Set<_i7.Comparator>? sort,
|
||||||
|
_i8.Filter? filter,
|
||||||
|
_i9.Properties? propertiesCreated,
|
||||||
|
_i9.Properties? propertiesUpdated,
|
||||||
|
_i10.MailboxId? inMailboxId}) =>
|
||||||
|
(super.noSuchMethod(
|
||||||
|
Invocation.method(#getAllEmail, [
|
||||||
|
accountId
|
||||||
|
], {
|
||||||
|
#position: position,
|
||||||
|
#limit: limit,
|
||||||
|
#sort: sort,
|
||||||
|
#filter: filter,
|
||||||
|
#propertiesCreated: propertiesCreated,
|
||||||
|
#propertiesUpdated: propertiesUpdated,
|
||||||
|
#inMailboxId: inMailboxId
|
||||||
|
}),
|
||||||
|
returnValue: Stream<_i4.EmailResponse>.empty())
|
||||||
|
as _i3.Stream<_i4.EmailResponse>);
|
||||||
|
@override
|
||||||
|
_i3.Stream<_i4.EmailResponse> refreshChanges(
|
||||||
|
_i5.AccountId? accountId, _i11.State? currentState,
|
||||||
|
{Set<_i7.Comparator>? sort,
|
||||||
|
_i9.Properties? propertiesCreated,
|
||||||
|
_i9.Properties? propertiesUpdated,
|
||||||
|
_i10.MailboxId? inMailboxId}) =>
|
||||||
|
(super.noSuchMethod(
|
||||||
|
Invocation.method(#refreshChanges, [
|
||||||
|
accountId,
|
||||||
|
currentState
|
||||||
|
], {
|
||||||
|
#sort: sort,
|
||||||
|
#propertiesCreated: propertiesCreated,
|
||||||
|
#propertiesUpdated: propertiesUpdated,
|
||||||
|
#inMailboxId: inMailboxId
|
||||||
|
}),
|
||||||
|
returnValue: Stream<_i4.EmailResponse>.empty())
|
||||||
|
as _i3.Stream<_i4.EmailResponse>);
|
||||||
|
}
|
||||||
Vendored
+2
-1
@@ -3,4 +3,5 @@ import 'package:jmap_dart_client/jmap/core/state.dart';
|
|||||||
|
|
||||||
class StateFixtures {
|
class StateFixtures {
|
||||||
static final currentMailboxState = State('a1234');
|
static final currentMailboxState = State('a1234');
|
||||||
}
|
static final currentEmailState = State('e1234');
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user