TF-3834 Implement remember user sort order after search
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
+6
@@ -20,6 +20,7 @@ import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_i
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_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/save_recent_search_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/store_email_sort_order_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/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart';
|
||||
@@ -67,6 +68,7 @@ const fallbackGenerators = {
|
||||
MockSpec<QuickSearchEmailInteractor>(),
|
||||
MockSpec<SaveRecentSearchInteractor>(),
|
||||
MockSpec<GetAllRecentSearchLatestInteractor>(),
|
||||
MockSpec<StoreEmailSortOrderInteractor>(),
|
||||
])
|
||||
void main() {
|
||||
// Declaration advanced filter controller
|
||||
@@ -80,6 +82,7 @@ void main() {
|
||||
late MockQuickSearchEmailInteractor mockQuickSearchEmailInteractor;
|
||||
late MockSaveRecentSearchInteractor mockSaveRecentSearchInteractor;
|
||||
late MockGetAllRecentSearchLatestInteractor mockGetAllRecentSearchLatestInteractor;
|
||||
late MockStoreEmailSortOrderInteractor mockStoreEmailSortOrderInteractor;
|
||||
|
||||
// Declaration base controller
|
||||
late MockCachingManager mockCachingManager;
|
||||
@@ -138,6 +141,7 @@ void main() {
|
||||
mockQuickSearchEmailInteractor = MockQuickSearchEmailInteractor();
|
||||
mockSaveRecentSearchInteractor = MockSaveRecentSearchInteractor();
|
||||
mockGetAllRecentSearchLatestInteractor = MockGetAllRecentSearchLatestInteractor();
|
||||
mockStoreEmailSortOrderInteractor = MockStoreEmailSortOrderInteractor();
|
||||
|
||||
searchController = SearchController(
|
||||
mockQuickSearchEmailInteractor,
|
||||
@@ -152,6 +156,7 @@ void main() {
|
||||
|
||||
Get.put<MailboxDashBoardController>(mockMailboxDashBoardController);
|
||||
Get.put<GetAutoCompleteInteractor>(mockGetAutoCompleteInteractor);
|
||||
Get.put<StoreEmailSortOrderInteractor>(mockStoreEmailSortOrderInteractor);
|
||||
|
||||
advancedFilterController = AdvancedFilterController();
|
||||
});
|
||||
@@ -160,6 +165,7 @@ void main() {
|
||||
group('applyAdvancedSearchFilter::test', () {
|
||||
test('SHOULD make sure memory search filter and search filter should be the same after applying', () async {
|
||||
// Arrange
|
||||
advancedFilterController.setMemorySearchFilter(SearchEmailFilter.initial());
|
||||
advancedFilterController.hasKeyWordFilterInputController.text = 'Hello';
|
||||
advancedFilterController.notKeyWordFilterInputController.text = 'dab';
|
||||
advancedFilterController.listFromEmailAddress = [EmailAddress(null, 'user1@example.com')];
|
||||
|
||||
+12
-2
@@ -60,11 +60,13 @@ import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree_b
|
||||
import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_name_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_stored_email_sort_order_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_all_composer_cache_on_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_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/store_email_sort_order_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/download/download_controller.dart';
|
||||
@@ -149,6 +151,8 @@ const fallbackGenerators = {
|
||||
MockSpec<QuickSearchEmailInteractor>(),
|
||||
MockSpec<SaveRecentSearchInteractor>(),
|
||||
MockSpec<GetAllRecentSearchLatestInteractor>(),
|
||||
MockSpec<StoreEmailSortOrderInteractor>(),
|
||||
MockSpec<GetStoredEmailSortOrderInteractor>(),
|
||||
MockSpec<GetSessionInteractor>(),
|
||||
MockSpec<GetAuthenticatedAccountInteractor>(),
|
||||
MockSpec<UpdateAccountCacheInteractor>(),
|
||||
@@ -241,6 +245,8 @@ void main() {
|
||||
final quickSearchEmailInteractor = MockQuickSearchEmailInteractor();
|
||||
final saveRecentSearchInteractor = MockSaveRecentSearchInteractor();
|
||||
final getAllRecentSearchLatestInteractor = MockGetAllRecentSearchLatestInteractor();
|
||||
final storeEmailSortOrderInteractor = MockStoreEmailSortOrderInteractor();
|
||||
final getStoredEmailSortOrderInteractor = MockGetStoredEmailSortOrderInteractor();
|
||||
late SearchController searchController;
|
||||
|
||||
// mock base controller Get dependencies
|
||||
@@ -380,6 +386,8 @@ void main() {
|
||||
removeComposerCacheByIdOnWebInteractor,
|
||||
getAllIdentitiesInteractor,
|
||||
clearMailboxInteractor,
|
||||
storeEmailSortOrderInteractor,
|
||||
getStoredEmailSortOrderInteractor,
|
||||
);
|
||||
});
|
||||
|
||||
@@ -460,7 +468,7 @@ void main() {
|
||||
getLatestChanges: anyNamed('getLatestChanges'),
|
||||
propertiesCreated: anyNamed('propertiesCreated'),
|
||||
propertiesUpdated: anyNamed('propertiesUpdated')));
|
||||
expect(searchController.sortOrderFiltered, EmailSortOrderType.mostRecent);
|
||||
expect(searchController.sortOrderFiltered, SearchEmailFilter.defaultSortOrder);
|
||||
expect(searchController.searchEmailFilter.value, SearchEmailFilter.initial());
|
||||
verify(getEmailsInMailboxInteractor.execute(
|
||||
testSession, testAccountId,
|
||||
@@ -490,6 +498,7 @@ void main() {
|
||||
when(context.mounted).thenReturn(true);
|
||||
|
||||
// expect query in advanced filter controller update as expected
|
||||
advancedFilterController.setMemorySearchFilter(SearchEmailFilter.initial());
|
||||
advancedFilterController.updateListEmailAddress(FilterField.from, [fromEmailAddress]);
|
||||
advancedFilterController.updateListEmailAddress(FilterField.to, [toEmailAddress]);
|
||||
advancedFilterController.subjectFilterInputController.text = emailSubject;
|
||||
@@ -520,7 +529,7 @@ void main() {
|
||||
getLatestChanges: anyNamed('getLatestChanges'),
|
||||
propertiesCreated: anyNamed('propertiesCreated'),
|
||||
propertiesUpdated: anyNamed('propertiesUpdated')));
|
||||
expect(searchController.sortOrderFiltered, EmailSortOrderType.mostRecent);
|
||||
expect(searchController.sortOrderFiltered, SearchEmailFilter.defaultSortOrder);
|
||||
expect(searchController.searchEmailFilter.value, SearchEmailFilter.initial());
|
||||
verify(getEmailsInMailboxInteractor.execute(
|
||||
testSession, testAccountId,
|
||||
@@ -565,6 +574,7 @@ void main() {
|
||||
text: SearchQuery(queryString),
|
||||
emailReceiveTimeType: EmailReceiveTimeType.last30Days,
|
||||
hasAttachment: true,
|
||||
position: 0,
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
+8
@@ -58,11 +58,13 @@ import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_na
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_report_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_stored_email_sort_order_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_all_composer_cache_on_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_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/store_email_sort_order_interactor.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/mailbox_dashboard_controller.dart';
|
||||
@@ -150,6 +152,8 @@ const fallbackGenerators = {
|
||||
MockSpec<QuickSearchEmailInteractor>(),
|
||||
MockSpec<SaveRecentSearchInteractor>(),
|
||||
MockSpec<GetAllRecentSearchLatestInteractor>(),
|
||||
MockSpec<StoreEmailSortOrderInteractor>(),
|
||||
MockSpec<GetStoredEmailSortOrderInteractor>(),
|
||||
MockSpec<GetSessionInteractor>(),
|
||||
MockSpec<GetAuthenticatedAccountInteractor>(),
|
||||
MockSpec<UpdateAccountCacheInteractor>(),
|
||||
@@ -231,6 +235,8 @@ void main() {
|
||||
final quickSearchEmailInteractor = MockQuickSearchEmailInteractor();
|
||||
final saveRecentSearchInteractor = MockSaveRecentSearchInteractor();
|
||||
final getAllRecentSearchLatestInteractor = MockGetAllRecentSearchLatestInteractor();
|
||||
final storeEmailSortOrderInteractor = MockStoreEmailSortOrderInteractor();
|
||||
final getStoredEmailSortOrderInteractor = MockGetStoredEmailSortOrderInteractor();
|
||||
|
||||
final cachingManager = MockCachingManager();
|
||||
final languageCacheManager = MockLanguageCacheManager();
|
||||
@@ -377,6 +383,8 @@ void main() {
|
||||
removeComposerCacheByIdOnWebInteractor,
|
||||
getAllIdentitiesInteractor,
|
||||
clearMailboxInteractor,
|
||||
storeEmailSortOrderInteractor,
|
||||
getStoredEmailSortOrderInteractor,
|
||||
);
|
||||
Get.put(mailboxDashboardController);
|
||||
mailboxDashboardController.onReady();
|
||||
|
||||
@@ -45,11 +45,13 @@ import 'package:tmail_ui_user/features/mailbox/domain/usecases/clear_mailbox_int
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_stored_email_sort_order_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_all_composer_cache_on_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_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/store_email_sort_order_interactor.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/mailbox_dashboard_controller.dart';
|
||||
@@ -167,6 +169,8 @@ const fallbackGenerators = {
|
||||
MockSpec<GetAuthenticationInfoInteractor>(),
|
||||
MockSpec<GetStoredOidcConfigurationInteractor>(),
|
||||
MockSpec<GetTokenOIDCInteractor>(),
|
||||
MockSpec<StoreEmailSortOrderInteractor>(),
|
||||
MockSpec<GetStoredEmailSortOrderInteractor>(),
|
||||
])
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
@@ -186,6 +190,8 @@ void main() {
|
||||
late MockQuickSearchEmailInteractor mockQuickSearchEmailInteractor;
|
||||
late MockSaveRecentSearchInteractor mockSaveRecentSearchInteractor;
|
||||
late MockGetAllRecentSearchLatestInteractor mockGetAllRecentSearchLatestInteractor;
|
||||
late MockStoreEmailSortOrderInteractor mockStoreEmailSortOrderInteractor;
|
||||
late MockGetStoredEmailSortOrderInteractor mockGetStoredEmailSortOrderInteractor;
|
||||
|
||||
// Declaration mailbox dashboard controller
|
||||
final MockGetSessionInteractor getSessionInteractor = MockGetSessionInteractor();
|
||||
@@ -296,6 +302,8 @@ void main() {
|
||||
mockQuickSearchEmailInteractor = MockQuickSearchEmailInteractor();
|
||||
mockSaveRecentSearchInteractor = MockSaveRecentSearchInteractor();
|
||||
mockGetAllRecentSearchLatestInteractor = MockGetAllRecentSearchLatestInteractor();
|
||||
mockStoreEmailSortOrderInteractor = MockStoreEmailSortOrderInteractor();
|
||||
mockGetStoredEmailSortOrderInteractor = MockGetStoredEmailSortOrderInteractor();
|
||||
|
||||
// Mock dashboard controller
|
||||
moveToMailboxInteractor = MockMoveToMailboxInteractor();
|
||||
@@ -377,6 +385,8 @@ void main() {
|
||||
removeComposerCacheByIdOnWebInteractor,
|
||||
getAllIdentitiesInteractor,
|
||||
clearMailboxInteractor,
|
||||
mockStoreEmailSortOrderInteractor,
|
||||
mockGetStoredEmailSortOrderInteractor,
|
||||
);
|
||||
|
||||
when(emailReceiveManager.pendingSharedFileInfo).thenAnswer((_) => BehaviorSubject.seeded([]));
|
||||
|
||||
@@ -27,7 +27,6 @@ import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_i
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.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/model/search/email_sort_order_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
||||
@@ -351,7 +350,7 @@ void main() {
|
||||
AccountFixtures.aliceAccountId,
|
||||
limit: UnsignedInt(emailList.length),
|
||||
position: null,
|
||||
sort: EmailSortOrderType.mostRecent.getSortOrder().toNullable(),
|
||||
sort: SearchEmailFilter.defaultSortOrder.getSortOrder().toNullable(),
|
||||
filter: SearchEmailFilter.initial().mappingToEmailFilterCondition(),
|
||||
properties: EmailUtils.getPropertiesForEmailGetMethod(
|
||||
SessionFixtures.aliceSession,
|
||||
@@ -428,7 +427,7 @@ void main() {
|
||||
AccountFixtures.aliceAccountId,
|
||||
limit: ThreadConstants.defaultLimit,
|
||||
position: null,
|
||||
sort: EmailSortOrderType.mostRecent.getSortOrder().toNullable(),
|
||||
sort: SearchEmailFilter.defaultSortOrder.getSortOrder().toNullable(),
|
||||
filter: SearchEmailFilter.initial().mappingToEmailFilterCondition(),
|
||||
properties: EmailUtils.getPropertiesForEmailGetMethod(
|
||||
SessionFixtures.aliceSession,
|
||||
|
||||
Reference in New Issue
Block a user