TF-2694 Unit Test User use advanced filter and sort then reset with open mailbox
This commit is contained in:
+204
-136
@@ -10,6 +10,7 @@ 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/session/session.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/state.dart';
|
import 'package:jmap_dart_client/jmap/core/state.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||||
import 'package:mockito/annotations.dart';
|
import 'package:mockito/annotations.dart';
|
||||||
@@ -52,11 +53,13 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_com
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/download/download_controller.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/download/download_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/spam_report_controller.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/spam_report_controller.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/advanced_search_filter.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
||||||
@@ -233,7 +236,7 @@ void main() {
|
|||||||
late MailboxController mailboxController;
|
late MailboxController mailboxController;
|
||||||
|
|
||||||
// mock thread controller direct dependencies
|
// mock thread controller direct dependencies
|
||||||
final getEmailsInMailboxInteractor = MockGetEmailsInMailboxInteractor();
|
late MockGetEmailsInMailboxInteractor getEmailsInMailboxInteractor;
|
||||||
final refreshChangesEmailsInMailboxInteractor =
|
final refreshChangesEmailsInMailboxInteractor =
|
||||||
MockRefreshChangesEmailsInMailboxInteractor();
|
MockRefreshChangesEmailsInMailboxInteractor();
|
||||||
final loadMoreEmailsInMailboxInteractor = MockLoadMoreEmailsInMailboxInteractor();
|
final loadMoreEmailsInMailboxInteractor = MockLoadMoreEmailsInMailboxInteractor();
|
||||||
@@ -241,164 +244,229 @@ void main() {
|
|||||||
final searchMoreEmailInteractor = MockSearchMoreEmailInteractor();
|
final searchMoreEmailInteractor = MockSearchMoreEmailInteractor();
|
||||||
late ThreadController threadController;
|
late ThreadController threadController;
|
||||||
|
|
||||||
|
late AdvancedFilterController advancedFilterController;
|
||||||
|
|
||||||
final context = MockBuildContext();
|
final context = MockBuildContext();
|
||||||
const queryString = 'test text';
|
const queryString = 'test text';
|
||||||
final google = Uri.parse('https://www.google.com');
|
final google = Uri.parse('https://www.google.com');
|
||||||
final testSession =
|
final testSession =
|
||||||
Session({}, {}, {}, UserName('data'), google, google, google, google, State('1'));
|
Session({}, {}, {}, UserName('data'), google, google, google, google, State('1'));
|
||||||
final testMailboxId = MailboxId(Id('1'));
|
final testMailboxId = MailboxId(Id('1'));
|
||||||
|
final testAccountId = AccountId(Id('123'));
|
||||||
|
|
||||||
setUp(() {
|
group('search/sort/filter feature:', () {
|
||||||
Get.put<RemoveEmailDraftsInteractor>(removeEmailDraftsInteractor);
|
setUp(() {
|
||||||
Get.put<EmailReceiveManager>(emailReceiveManager);
|
getEmailsInMailboxInteractor = MockGetEmailsInMailboxInteractor();
|
||||||
Get.put<DownloadController>(downloadController);
|
|
||||||
Get.put<AppGridDashboardController>(appGridDashboardController);
|
|
||||||
Get.put<SpamReportController>(spamReportController);
|
|
||||||
Get.put<NetworkConnectionController>(networkConnectionController);
|
|
||||||
Get.put<CachingManager>(cachingManager);
|
|
||||||
Get.put<LanguageCacheManager>(languageCacheManager);
|
|
||||||
Get.put<AuthorizationInterceptors>(authorizationInterceptors);
|
|
||||||
Get.put<AuthorizationInterceptors>(
|
|
||||||
authorizationInterceptors,
|
|
||||||
tag: BindingTag.isolateTag,
|
|
||||||
);
|
|
||||||
Get.put<DynamicUrlInterceptors>(dynamicUrlInterceptors);
|
|
||||||
Get.put<DeleteCredentialInteractor>(deleteCredentialInteractor);
|
|
||||||
Get.put<LogoutOidcInteractor>(logoutOidcInteractor);
|
|
||||||
Get.put<DeleteAuthorityOidcInteractor>(deleteAuthorityOidcInteractor);
|
|
||||||
Get.put<AppToast>(appToast);
|
|
||||||
Get.put<ImagePaths>(imagePaths);
|
|
||||||
Get.put<ResponsiveUtils>(responsiveUtils);
|
|
||||||
Get.put<Uuid>(uuid);
|
|
||||||
Get.put<GetSessionInteractor>(getSessionInteractor);
|
|
||||||
Get.put<GetAuthenticatedAccountInteractor>(getAuthenticatedAccountInteractor);
|
|
||||||
Get.put<UpdateAuthenticationAccountInteractor>(updateAuthenticationAccountInteractor);
|
|
||||||
|
|
||||||
Get.testMode = true;
|
Get.put<RemoveEmailDraftsInteractor>(removeEmailDraftsInteractor);
|
||||||
PackageInfo.setMockInitialValues(
|
Get.put<EmailReceiveManager>(emailReceiveManager);
|
||||||
appName: '',
|
Get.put<DownloadController>(downloadController);
|
||||||
packageName: '',
|
Get.put<AppGridDashboardController>(appGridDashboardController);
|
||||||
version: '',
|
Get.put<SpamReportController>(spamReportController);
|
||||||
buildNumber: '',
|
Get.put<NetworkConnectionController>(networkConnectionController);
|
||||||
buildSignature: '');
|
Get.put<CachingManager>(cachingManager);
|
||||||
|
Get.put<LanguageCacheManager>(languageCacheManager);
|
||||||
|
Get.put<AuthorizationInterceptors>(authorizationInterceptors);
|
||||||
|
Get.put<AuthorizationInterceptors>(
|
||||||
|
authorizationInterceptors,
|
||||||
|
tag: BindingTag.isolateTag,
|
||||||
|
);
|
||||||
|
Get.put<DynamicUrlInterceptors>(dynamicUrlInterceptors);
|
||||||
|
Get.put<DeleteCredentialInteractor>(deleteCredentialInteractor);
|
||||||
|
Get.put<LogoutOidcInteractor>(logoutOidcInteractor);
|
||||||
|
Get.put<DeleteAuthorityOidcInteractor>(deleteAuthorityOidcInteractor);
|
||||||
|
Get.put<AppToast>(appToast);
|
||||||
|
Get.put<ImagePaths>(imagePaths);
|
||||||
|
Get.put<ResponsiveUtils>(responsiveUtils);
|
||||||
|
Get.put<Uuid>(uuid);
|
||||||
|
Get.put<GetSessionInteractor>(getSessionInteractor);
|
||||||
|
Get.put<GetAuthenticatedAccountInteractor>(getAuthenticatedAccountInteractor);
|
||||||
|
Get.put<UpdateAuthenticationAccountInteractor>(updateAuthenticationAccountInteractor);
|
||||||
|
|
||||||
when(emailReceiveManager.pendingEmailAddressInfo).thenAnswer((_) => BehaviorSubject.seeded(null));
|
Get.testMode = true;
|
||||||
when(emailReceiveManager.pendingEmailContentInfo).thenAnswer((_) => BehaviorSubject.seeded(null));
|
PackageInfo.setMockInitialValues(
|
||||||
when(emailReceiveManager.pendingFileInfo).thenAnswer((_) => BehaviorSubject.seeded([]));
|
appName: '',
|
||||||
|
packageName: '',
|
||||||
|
version: '',
|
||||||
|
buildNumber: '',
|
||||||
|
buildSignature: '');
|
||||||
|
|
||||||
searchController = SearchController(
|
when(emailReceiveManager.pendingEmailAddressInfo).thenAnswer((_) => BehaviorSubject.seeded(null));
|
||||||
quickSearchEmailInteractor,
|
when(emailReceiveManager.pendingEmailContentInfo).thenAnswer((_) => BehaviorSubject.seeded(null));
|
||||||
saveRecentSearchInteractor,
|
when(emailReceiveManager.pendingFileInfo).thenAnswer((_) => BehaviorSubject.seeded([]));
|
||||||
getAllRecentSearchLatestInteractor);
|
|
||||||
Get.put(searchController);
|
|
||||||
|
|
||||||
mailboxDashboardController = MailboxDashBoardController(
|
searchController = SearchController(
|
||||||
moveToMailboxInteractor,
|
quickSearchEmailInteractor,
|
||||||
deleteEmailPermanentlyInteractor,
|
saveRecentSearchInteractor,
|
||||||
markAsMailboxReadInteractor,
|
getAllRecentSearchLatestInteractor);
|
||||||
getEmailCacheOnWebInteractor,
|
Get.put(searchController);
|
||||||
markAsEmailReadInteractor,
|
|
||||||
markAsStarEmailInteractor,
|
|
||||||
markAsMultipleEmailReadInteractor,
|
|
||||||
markAsStarMultipleEmailInteractor,
|
|
||||||
moveMultipleEmailToMailboxInteractor,
|
|
||||||
emptyTrashFolderInteractor,
|
|
||||||
deleteMultipleEmailsPermanentlyInteractor,
|
|
||||||
getEmailByIdInteractor,
|
|
||||||
sendEmailInteractor,
|
|
||||||
storeSendingEmailInteractor,
|
|
||||||
updateSendingEmailInteractor,
|
|
||||||
getAllSendingEmailInteractor,
|
|
||||||
storeSessionInteractor,
|
|
||||||
emptySpamFolderInteractor,
|
|
||||||
saveEmailAsDraftsInteractor,
|
|
||||||
updateEmailDraftsInteractor,
|
|
||||||
deleteSendingEmailInteractor,
|
|
||||||
unsubscribeEmailInteractor,
|
|
||||||
restoreDeletedMessageInteractor,
|
|
||||||
getRestoredDeletedMessageInteractor);
|
|
||||||
Get.put(mailboxDashboardController);
|
|
||||||
mailboxDashboardController.onReady();
|
|
||||||
|
|
||||||
mailboxController = MailboxController(
|
mailboxDashboardController = MailboxDashBoardController(
|
||||||
createNewMailboxInteractor,
|
moveToMailboxInteractor,
|
||||||
deleteMultipleMailboxInteractor,
|
deleteEmailPermanentlyInteractor,
|
||||||
renameMailboxInteractor,
|
markAsMailboxReadInteractor,
|
||||||
moveMailboxInteractor,
|
getEmailCacheOnWebInteractor,
|
||||||
subscribeMailboxInteractor,
|
markAsEmailReadInteractor,
|
||||||
subscribeMultipleMailboxInteractor,
|
markAsStarEmailInteractor,
|
||||||
createDefaultMailboxInteractor,
|
markAsMultipleEmailReadInteractor,
|
||||||
treeBuilder,
|
markAsStarMultipleEmailInteractor,
|
||||||
verifyNameInteractor,
|
moveMultipleEmailToMailboxInteractor,
|
||||||
getAllMailboxInteractor,
|
emptyTrashFolderInteractor,
|
||||||
refreshAllMailboxInteractor);
|
deleteMultipleEmailsPermanentlyInteractor,
|
||||||
mailboxController.onReady();
|
getEmailByIdInteractor,
|
||||||
|
sendEmailInteractor,
|
||||||
|
storeSendingEmailInteractor,
|
||||||
|
updateSendingEmailInteractor,
|
||||||
|
getAllSendingEmailInteractor,
|
||||||
|
storeSessionInteractor,
|
||||||
|
emptySpamFolderInteractor,
|
||||||
|
saveEmailAsDraftsInteractor,
|
||||||
|
updateEmailDraftsInteractor,
|
||||||
|
deleteSendingEmailInteractor,
|
||||||
|
unsubscribeEmailInteractor,
|
||||||
|
restoreDeletedMessageInteractor,
|
||||||
|
getRestoredDeletedMessageInteractor);
|
||||||
|
Get.put(mailboxDashboardController);
|
||||||
|
mailboxDashboardController.onReady();
|
||||||
|
|
||||||
threadController = ThreadController(
|
mailboxController = MailboxController(
|
||||||
getEmailsInMailboxInteractor,
|
createNewMailboxInteractor,
|
||||||
refreshChangesEmailsInMailboxInteractor,
|
deleteMultipleMailboxInteractor,
|
||||||
loadMoreEmailsInMailboxInteractor,
|
renameMailboxInteractor,
|
||||||
searchEmailInteractor,
|
moveMailboxInteractor,
|
||||||
searchMoreEmailInteractor,
|
subscribeMailboxInteractor,
|
||||||
getEmailByIdInteractor);
|
subscribeMultipleMailboxInteractor,
|
||||||
Get.put(threadController);
|
createDefaultMailboxInteractor,
|
||||||
|
treeBuilder,
|
||||||
|
verifyNameInteractor,
|
||||||
|
getAllMailboxInteractor,
|
||||||
|
refreshAllMailboxInteractor);
|
||||||
|
mailboxController.onReady();
|
||||||
|
|
||||||
mailboxDashboardController.sessionCurrent = testSession;
|
threadController = ThreadController(
|
||||||
mailboxDashboardController.filterMessageOption.value = FilterMessageOption.all;
|
getEmailsInMailboxInteractor,
|
||||||
mailboxDashboardController.userProfile.value = UserProfile('test@gmail.com');
|
refreshChangesEmailsInMailboxInteractor,
|
||||||
});
|
loadMoreEmailsInMailboxInteractor,
|
||||||
|
searchEmailInteractor,
|
||||||
|
searchMoreEmailInteractor,
|
||||||
|
getEmailByIdInteractor);
|
||||||
|
Get.put(threadController);
|
||||||
|
|
||||||
tearDown(Get.deleteAll);
|
advancedFilterController = AdvancedFilterController();
|
||||||
|
|
||||||
test('WHEN user search email by keyword, '
|
mailboxDashboardController.sessionCurrent = testSession;
|
||||||
|
mailboxDashboardController.filterMessageOption.value = FilterMessageOption.all;
|
||||||
|
mailboxDashboardController.userProfile.value = UserProfile('test@gmail.com');
|
||||||
|
mailboxDashboardController.accountId.value = testAccountId;
|
||||||
|
});
|
||||||
|
|
||||||
|
test('WHEN user search email by keyword, '
|
||||||
'THEN user filter search result, '
|
'THEN user filter search result, '
|
||||||
'THEN user tap on mail box, '
|
'THEN user tap on mail box, '
|
||||||
'SHOULD reset all search and filter options, '
|
'SHOULD reset all search and filter options, '
|
||||||
'THEN query get all email with default options',
|
'THEN query get all email with default options',
|
||||||
() async {
|
() async {
|
||||||
// arrange
|
// arrange
|
||||||
when(context.owner).thenReturn(BuildOwner(focusManager: FocusManager()));
|
when(context.owner).thenReturn(BuildOwner(focusManager: FocusManager()));
|
||||||
final testAccountId = AccountId(Id('123'));
|
|
||||||
mailboxDashboardController.accountId.value = testAccountId;
|
|
||||||
|
|
||||||
// expect query in search controller update as expected
|
// expect query in search controller update as expected
|
||||||
mailboxDashboardController.searchEmail(context, queryString: queryString);
|
mailboxDashboardController.searchEmail(context, queryString: queryString);
|
||||||
expect(searchController.searchEmailFilter.value.text, SearchQuery(queryString));
|
expect(searchController.searchEmailFilter.value.text, SearchQuery(queryString));
|
||||||
|
|
||||||
// expect sort in search controller update as expected
|
// expect sort in search controller update as expected
|
||||||
mailboxDashboardController.selectSortOrderQuickSearchFilter(
|
mailboxDashboardController.selectSortOrderQuickSearchFilter(
|
||||||
context,
|
context,
|
||||||
EmailSortOrderType.oldest);
|
EmailSortOrderType.oldest);
|
||||||
expect(searchController.sortOrderFiltered.value, EmailSortOrderType.oldest);
|
expect(searchController.sortOrderFiltered.value, EmailSortOrderType.oldest);
|
||||||
|
|
||||||
// expect filter in search controller update as expected
|
// expect filter in search controller update as expected
|
||||||
mailboxDashboardController.selectQuickSearchFilterAction(QuickSearchFilter.hasAttachment);
|
mailboxDashboardController.selectQuickSearchFilterAction(QuickSearchFilter.hasAttachment);
|
||||||
expect(searchController.searchEmailFilter.value.hasAttachment, true);
|
expect(searchController.searchEmailFilter.value.hasAttachment, true);
|
||||||
mailboxDashboardController.selectQuickSearchFilterAction(QuickSearchFilter.last7Days);
|
mailboxDashboardController.selectQuickSearchFilterAction(QuickSearchFilter.last7Days);
|
||||||
mailboxDashboardController.selectReceiveTimeQuickSearchFilter(context, EmailReceiveTimeType.last30Days);
|
mailboxDashboardController.selectReceiveTimeQuickSearchFilter(context, EmailReceiveTimeType.last30Days);
|
||||||
expect(searchController.searchEmailFilter.value.emailReceiveTimeType, EmailReceiveTimeType.last30Days);
|
expect(searchController.searchEmailFilter.value.emailReceiveTimeType, EmailReceiveTimeType.last30Days);
|
||||||
|
|
||||||
// expect mailbox dashboard controller calls GetEmailsInMailboxInteractor
|
// expect mailbox dashboard controller calls GetEmailsInMailboxInteractor
|
||||||
// when [selectedMailbox] is changed and triggered obx listener in thread controller
|
// when [selectedMailbox] is changed and triggered obx listener in thread controller
|
||||||
mailboxController.openMailbox(context, PresentationMailbox(testMailboxId));
|
mailboxController.openMailbox(context, PresentationMailbox(testMailboxId));
|
||||||
await untilCalled(getEmailsInMailboxInteractor.execute(
|
await untilCalled(getEmailsInMailboxInteractor.execute(
|
||||||
any, testAccountId,
|
any, any,
|
||||||
limit: anyNamed('limit'),
|
limit: anyNamed('limit'),
|
||||||
sort: anyNamed('sort'),
|
sort: anyNamed('sort'),
|
||||||
emailFilter: anyNamed('emailFilter'),
|
emailFilter: anyNamed('emailFilter'),
|
||||||
propertiesCreated: anyNamed('propertiesCreated'),
|
propertiesCreated: anyNamed('propertiesCreated'),
|
||||||
propertiesUpdated: anyNamed('propertiesUpdated')));
|
propertiesUpdated: anyNamed('propertiesUpdated')));
|
||||||
expect(searchController.sortOrderFiltered.value, EmailSortOrderType.mostRecent);
|
expect(searchController.sortOrderFiltered.value, EmailSortOrderType.mostRecent);
|
||||||
expect(searchController.searchEmailFilter.value, SearchEmailFilter.initial());
|
expect(searchController.searchEmailFilter.value, SearchEmailFilter.initial());
|
||||||
verify(getEmailsInMailboxInteractor.execute(
|
verify(getEmailsInMailboxInteractor.execute(
|
||||||
testSession, testAccountId,
|
testSession, testAccountId,
|
||||||
limit: ThreadConstants.defaultLimit,
|
limit: ThreadConstants.defaultLimit,
|
||||||
sort: EmailSortOrderType.mostRecent.getSortOrder().toNullable(),
|
sort: EmailSortOrderType.mostRecent.getSortOrder().toNullable(),
|
||||||
emailFilter: EmailFilter(
|
emailFilter: EmailFilter(
|
||||||
filter: EmailFilterCondition(inMailbox: testMailboxId),
|
filter: EmailFilterCondition(inMailbox: testMailboxId),
|
||||||
filterOption: FilterMessageOption.all,
|
filterOption: FilterMessageOption.all,
|
||||||
mailboxId: testMailboxId),
|
mailboxId: testMailboxId),
|
||||||
propertiesCreated: ThreadConstants.propertiesDefault,
|
propertiesCreated: ThreadConstants.propertiesDefault,
|
||||||
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault));
|
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('WHEN user use advanced search/sort/filter feature, '
|
||||||
|
'THEN user tap on mail box, '
|
||||||
|
'SHOULD reset all advanced search and filter options, '
|
||||||
|
'THEN query get all email with default options',
|
||||||
|
() async {
|
||||||
|
final fromEmailAddress = EmailAddress('test from', 'test-from@gmail.com');
|
||||||
|
final toEmailAddress = EmailAddress('test to', 'test-to@gmail.com');
|
||||||
|
const emailSubject = 'test subject';
|
||||||
|
const emailContainsWord = 'test word';
|
||||||
|
const emailNotContainsWord = 'test not word';
|
||||||
|
// arrange
|
||||||
|
when(context.owner).thenReturn(BuildOwner(focusManager: FocusManager()));
|
||||||
|
|
||||||
|
// expect query in advanced filter controller update as expected
|
||||||
|
advancedFilterController.updateListEmailAddress(AdvancedSearchFilterField.from, [fromEmailAddress]);
|
||||||
|
advancedFilterController.updateListEmailAddress(AdvancedSearchFilterField.to, [toEmailAddress]);
|
||||||
|
advancedFilterController.subjectFilterInputController.text = emailSubject;
|
||||||
|
advancedFilterController.hasKeyWordFilterInputController.text = emailContainsWord;
|
||||||
|
advancedFilterController.notKeyWordFilterInputController.text = emailNotContainsWord;
|
||||||
|
// mailbox: impossible? due to private field
|
||||||
|
advancedFilterController.updateReceiveDateSearchFilter(context, EmailReceiveTimeType.last30Days);
|
||||||
|
advancedFilterController.updateSortOrder(EmailSortOrderType.relevance);
|
||||||
|
advancedFilterController.applyAdvancedSearchFilter(context);
|
||||||
|
expect(searchController.searchEmailFilter.value, SearchEmailFilter(
|
||||||
|
from: {fromEmailAddress.email!},
|
||||||
|
to: {toEmailAddress.email!},
|
||||||
|
subject: emailSubject,
|
||||||
|
text: SearchQuery(emailContainsWord),
|
||||||
|
notKeyword: {emailNotContainsWord},
|
||||||
|
emailReceiveTimeType: EmailReceiveTimeType.last30Days,
|
||||||
|
sortOrder: EmailSortOrderType.relevance.getSortOrder().toNullable(),
|
||||||
|
position: 0));
|
||||||
|
|
||||||
|
// expect mailbox dashboard controller calls GetEmailsInMailboxInteractor
|
||||||
|
// when [selectedMailbox] is changed and triggered obx listener in thread controller
|
||||||
|
mailboxController.openMailbox(context, PresentationMailbox(testMailboxId));
|
||||||
|
await untilCalled(getEmailsInMailboxInteractor.execute(
|
||||||
|
any, any,
|
||||||
|
limit: anyNamed('limit'),
|
||||||
|
sort: anyNamed('sort'),
|
||||||
|
emailFilter: anyNamed('emailFilter'),
|
||||||
|
propertiesCreated: anyNamed('propertiesCreated'),
|
||||||
|
propertiesUpdated: anyNamed('propertiesUpdated')));
|
||||||
|
expect(searchController.sortOrderFiltered.value, EmailSortOrderType.mostRecent);
|
||||||
|
expect(searchController.searchEmailFilter.value, SearchEmailFilter.initial());
|
||||||
|
verify(getEmailsInMailboxInteractor.execute(
|
||||||
|
testSession, testAccountId,
|
||||||
|
limit: ThreadConstants.defaultLimit,
|
||||||
|
sort: EmailSortOrderType.mostRecent.getSortOrder().toNullable(),
|
||||||
|
emailFilter: EmailFilter(
|
||||||
|
filter: EmailFilterCondition(inMailbox: testMailboxId),
|
||||||
|
filterOption: FilterMessageOption.all,
|
||||||
|
mailboxId: testMailboxId),
|
||||||
|
propertiesCreated: ThreadConstants.propertiesDefault,
|
||||||
|
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault));
|
||||||
|
});
|
||||||
|
|
||||||
|
tearDown(Get.deleteAll);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user