Add unit test for createDefaultMailbox & setRoleDefaultMailbox method in MailboxAPI
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -52,7 +52,7 @@ abstract class MailboxDataSource {
|
||||
|
||||
Future<bool> handleMailboxRightRequest(Session session, AccountId accountId, MailboxRightRequest request);
|
||||
|
||||
Future<(List<Mailbox> mailboxes, Map<Id, SetError> mapErrors)> createDefaultMailbox(Session session, AccountId accountId, List<Role> listRole);
|
||||
Future<(List<Mailbox> mailboxes, Map<Id, SetError> mapErrors)> createDefaultMailbox(Session session, AccountId accountId, Map<Id, Role> mapRoles);
|
||||
|
||||
Future<(List<Mailbox> mailboxes, Map<Id, SetError> mapErrors)> setRoleDefaultMailbox(Session session, AccountId accountId, List<Mailbox> listMailbox);
|
||||
|
||||
|
||||
@@ -141,7 +141,7 @@ class MailboxCacheDataSourceImpl extends MailboxDataSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<(List<Mailbox> mailboxes, Map<Id, SetError> mapErrors)> createDefaultMailbox(Session session, AccountId accountId, List<Role> listRole) {
|
||||
Future<(List<Mailbox> mailboxes, Map<Id, SetError> mapErrors)> createDefaultMailbox(Session session, AccountId accountId, Map<Id, Role> mapRoles) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
|
||||
@@ -130,9 +130,9 @@ class MailboxDataSourceImpl extends MailboxDataSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<(List<Mailbox> mailboxes, Map<Id, SetError> mapErrors)> createDefaultMailbox(Session session, AccountId accountId, List<Role> listRole) {
|
||||
Future<(List<Mailbox> mailboxes, Map<Id, SetError> mapErrors)> createDefaultMailbox(Session session, AccountId accountId, Map<Id, Role> mapRoles) {
|
||||
return Future.sync(() async {
|
||||
return await mailboxAPI.createDefaultMailbox(session, accountId, listRole);
|
||||
return await mailboxAPI.createDefaultMailbox(session, accountId, mapRoles);
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
|
||||
@@ -456,13 +456,8 @@ class MailboxAPI with HandleSetErrorMixin {
|
||||
Future<(List<Mailbox> mailboxes, Map<Id, SetError> mapErrors)> createDefaultMailbox(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<Role> listRole
|
||||
Map<Id, Role> mapRoles,
|
||||
) async {
|
||||
final mapRoles = {
|
||||
for (var role in listRole)
|
||||
Id(_uuid.v1()) : role
|
||||
};
|
||||
|
||||
final mapCreate = {
|
||||
for (var id in mapRoles.keys)
|
||||
id : Mailbox(name: MailboxName(mapRoles[id]!.mailboxName), isSubscribed: IsSubscribed(true))
|
||||
|
||||
@@ -292,8 +292,8 @@ class MailboxRepositoryImpl extends MailboxRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<(List<Mailbox> mailboxes, Map<Id, SetError> mapErrors)> createDefaultMailbox(Session session, AccountId accountId, List<Role> listRole) {
|
||||
return mapDataSource[DataSourceType.network]!.createDefaultMailbox(session, accountId, listRole);
|
||||
Future<(List<Mailbox> mailboxes, Map<Id, SetError> mapErrors)> createDefaultMailbox(Session session, AccountId accountId, Map<Id, Role> mapRoles) {
|
||||
return mapDataSource[DataSourceType.network]!.createDefaultMailbox(session, accountId, mapRoles);
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -49,7 +49,7 @@ abstract class MailboxRepository {
|
||||
|
||||
Future<bool> handleMailboxRightRequest(Session session, AccountId accountId, MailboxRightRequest request);
|
||||
|
||||
Future<(List<Mailbox> mailboxes, Map<Id, SetError> mapErrors)> createDefaultMailbox(Session session, AccountId accountId, List<Role> listRole);
|
||||
Future<(List<Mailbox> mailboxes, Map<Id, SetError> mapErrors)> createDefaultMailbox(Session session, AccountId accountId, Map<Id, Role> mapRoles);
|
||||
|
||||
Future<(List<Mailbox> mailboxes, Map<Id, SetError> mapErrors)> setRoleDefaultMailbox(Session session, AccountId accountId, List<Mailbox> listMailbox);
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'package:core/presentation/state/success.dart';
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:dartz/dartz.dart' as dartz;
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
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/mail/mailbox/mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/exceptions/set_mailbox_method_exception.dart';
|
||||
@@ -17,14 +18,14 @@ class CreateDefaultMailboxInteractor {
|
||||
Stream<dartz.Either<Failure, Success>> execute(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<Role> listRole
|
||||
Map<Id, Role> mapRoles,
|
||||
) async* {
|
||||
try {
|
||||
yield dartz.Right<Failure, Success>(CreateDefaultMailboxLoading());
|
||||
final mailboxesRecord = await _mailboxRepository.createDefaultMailbox(
|
||||
session,
|
||||
accountId,
|
||||
listRole
|
||||
mapRoles,
|
||||
);
|
||||
|
||||
final listMailboxCreated = mailboxesRecord.$1;
|
||||
|
||||
@@ -10,6 +10,7 @@ import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/error/method/error_method_response.dart';
|
||||
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/state.dart' as jmap;
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
@@ -650,12 +651,17 @@ class MailboxController extends BaseMailboxController
|
||||
final listRoleMissing = MailboxConstants.defaultMailboxRoles
|
||||
.whereNot((role) => mapDefaultMailboxRole.containsKey(role) || findNodeByNameOnFirstLevel(role.value) != null)
|
||||
.toList();
|
||||
log('MailboxController::_handleCreateDefaultFolderIfMissing():listRoleMissing: $listRoleMissing');
|
||||
if (listRoleMissing.isNotEmpty && accountId != null && session != null) {
|
||||
|
||||
final mapRoles = {
|
||||
for (var role in listRoleMissing)
|
||||
Id(uuid.v1()) : role
|
||||
};
|
||||
log('MailboxController::_handleCreateDefaultFolderIfMissing():mapRoles: $mapRoles');
|
||||
if (mapRoles.isNotEmpty && accountId != null && session != null) {
|
||||
consumeState(_createDefaultMailboxInteractor.execute(
|
||||
session!,
|
||||
accountId!,
|
||||
listRoleMissing
|
||||
mapRoles,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user