From 2de0734b176a375def7dc33881ea6bdc6317237f Mon Sep 17 00:00:00 2001 From: DatDang Date: Thu, 15 Aug 2024 15:31:20 +0700 Subject: [PATCH] TF-2931 Filter empty name identies --- .../get_all_identities_interactor.dart | 6 ++- .../get_all_identities_interactor_test.dart | 53 +++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create 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 ba19dfb26..fd92fd346 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 @@ -26,7 +26,11 @@ class GetAllIdentitiesInteractor { if (sortOrderIsSupported && identitiesResponse.identities != null) { _identityUtils.sortListIdentities(identitiesResponse.identities!); } - yield Right(GetAllIdentitiesSuccess(identitiesResponse.identities, identitiesResponse.state)); + yield Right(GetAllIdentitiesSuccess( + identitiesResponse.identities + ?.where((identity) => identity.name?.trim().isNotEmpty == true) + .toList(), + identitiesResponse.state)); } catch (exception) { yield Left(GetAllIdentitiesFailure(exception)); } 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 new file mode 100644 index 000000000..6fd437726 --- /dev/null +++ b/test/features/manage_account/domain/usecases/get_all_identities_interactor_test.dart @@ -0,0 +1,53 @@ +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