From 2f669b077c0e22ed81f7172ec06a6f9fc9e9d7e1 Mon Sep 17 00:00:00 2001 From: DatDang Date: Thu, 22 Aug 2024 14:02:07 +0700 Subject: [PATCH] Hotfix cannot set default identity --- .../get_all_identities_interactor.dart | 4 +- .../identities/identities_controller.dart | 2 +- .../get_all_identities_interactor_test.dart | 53 ------------------- .../identities_controller_test.dart | 31 +++++++++++ 4 files changed, 33 insertions(+), 57 deletions(-) delete mode 100644 test/features/manage_account/domain/usecases/get_all_identities_interactor_test.dart diff --git a/lib/features/manage_account/domain/usecases/get_all_identities_interactor.dart b/lib/features/manage_account/domain/usecases/get_all_identities_interactor.dart index fd92fd346..213a26cf9 100644 --- a/lib/features/manage_account/domain/usecases/get_all_identities_interactor.dart +++ b/lib/features/manage_account/domain/usecases/get_all_identities_interactor.dart @@ -27,9 +27,7 @@ class GetAllIdentitiesInteractor { _identityUtils.sortListIdentities(identitiesResponse.identities!); } yield Right(GetAllIdentitiesSuccess( - identitiesResponse.identities - ?.where((identity) => identity.name?.trim().isNotEmpty == true) - .toList(), + identitiesResponse.identities, identitiesResponse.state)); } catch (exception) { yield Left(GetAllIdentitiesFailure(exception)); diff --git a/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart b/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart index 155362525..77ee0ef25 100644 --- a/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart +++ b/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart @@ -139,7 +139,7 @@ class IdentitiesController extends BaseController { void _handleGetAllIdentitiesSuccess(GetAllIdentitiesSuccess success) { if (success.identities?.isNotEmpty == true) { final newListIdentities = success.identities! - .where((identity) => identity.mayDelete == true) + .where((identity) => identity.mayDelete == true && identity.name?.trim().isNotEmpty == true) .toList(); listAllIdentities.addAll(newListIdentities); } diff --git a/test/features/manage_account/domain/usecases/get_all_identities_interactor_test.dart b/test/features/manage_account/domain/usecases/get_all_identities_interactor_test.dart deleted file mode 100644 index 6fd437726..000000000 --- a/test/features/manage_account/domain/usecases/get_all_identities_interactor_test.dart +++ /dev/null @@ -1,53 +0,0 @@ -import 'package:dartz/dartz.dart' hide State; -import 'package:flutter_test/flutter_test.dart'; -import 'package:jmap_dart_client/jmap/identities/identity.dart'; -import 'package:mockito/annotations.dart'; -import 'package:mockito/mockito.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/model/identities_response.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/repository/identity_repository.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_identities_state.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart'; -import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/utils/identity_utils.dart'; - -import '../../../../fixtures/account_fixtures.dart'; -import '../../../../fixtures/session_fixtures.dart'; -import 'get_all_identities_interactor_test.mocks.dart'; - -@GenerateNiceMocks([MockSpec()]) -void main() { - final identityRepository = MockIdentityRepository(); - final getAllIdentitiesInteractor = GetAllIdentitiesInteractor( - identityRepository, - IdentityUtils()); - - group('get all identities interactor test:', () { - test( - 'should return only identities which name is not empty', - () { - // arrange - final identity1 = Identity(name: ''); - final identity2 = Identity(); - final identity3 = Identity(name: 'valid name'); - final identity4 = Identity(name: ' '); - when(identityRepository.getAllIdentities(any, any)).thenAnswer( - (_) async => IdentitiesResponse(identities: [ - identity1, - identity2, - identity3, - identity4 - ]) - ); - - // assert - expect( - getAllIdentitiesInteractor.execute( - SessionFixtures.aliceSession, - AccountFixtures.aliceAccountId), - emitsInOrder([ - Right(GetAllIdentitiesLoading()), - Right(GetAllIdentitiesSuccess([identity3], null)) - ]) - ); - }); - }); -} \ No newline at end of file diff --git a/test/features/manage_account/presentation/profiles/identities/identities_controller_test.dart b/test/features/manage_account/presentation/profiles/identities/identities_controller_test.dart index fb4e2a1d7..f1b70a239 100644 --- a/test/features/manage_account/presentation/profiles/identities/identities_controller_test.dart +++ b/test/features/manage_account/presentation/profiles/identities/identities_controller_test.dart @@ -3,14 +3,20 @@ import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/utils/application_manager.dart'; +import 'package:dartz/dartz.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:get/get.dart'; +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/id.dart'; +import 'package:jmap_dart_client/jmap/identities/identity.dart'; import 'package:mockito/annotations.dart'; +import 'package:mockito/mockito.dart'; import 'package:tmail_ui_user/features/caching/caching_manager.dart'; import 'package:tmail_ui_user/features/login/data/network/interceptors/authorization_interceptors.dart'; import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart'; import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_identities_state.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/create_new_default_identity_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/create_new_identity_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_identity_interactor.dart'; @@ -30,6 +36,7 @@ import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart'; import 'package:tmail_ui_user/main/utils/toast_manager.dart'; import 'package:uuid/uuid.dart'; +import '../../../../../fixtures/session_fixtures.dart'; import 'identities_controller_test.mocks.dart'; mockControllerCallback() => InternalFinalCallback(callback: () {}); @@ -195,5 +202,29 @@ void main() { tag: BindingTag.cleanUpPublicAssetsInteractorBindingsTag), false); }); + + test( + 'should only show identities with name not empty', + () async { + // arrange + final identity1 = Identity(name: '', mayDelete: true); + final identity2 = Identity(mayDelete: true); + final identity3 = Identity(name: 'valid name', mayDelete: true); + final identity4 = Identity(name: ' ', mayDelete: true); + when(mockGetAllIdentitiesInteractor.execute(any, any, properties: anyNamed('properties'))) + .thenAnswer((_) => Stream.value(Right(GetAllIdentitiesSuccess( + [identity1, identity2, identity3, identity4], + null)))); + when(mockManageAccountDashBoardController.accountId).thenReturn(Rxn()); + when(mockManageAccountDashBoardController.sessionCurrent).thenReturn(SessionFixtures.aliceSession); + + // act + identitiesController.onInit(); + mockManageAccountDashBoardController.accountId.value = AccountId(Id('value')); + await untilCalled(mockGetAllIdentitiesInteractor.execute(any, any, properties: anyNamed('properties'))); + + // assert + await expectLater(identitiesController.listAllIdentities, [identity3]); + }); }); } \ No newline at end of file