TF-3189 new option to enable/disable subaddressing for a personal folder

This commit is contained in:
Florent Azavant
2024-10-21 16:29:26 +02:00
committed by Dat H. Pham
parent f8f248fc3c
commit 89d80fe142
36 changed files with 455 additions and 4 deletions
@@ -0,0 +1,54 @@
import 'package:dio/dio.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:jmap_dart_client/http/http_client.dart';
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_api.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subaddressing_action.dart';
import 'package:uuid/uuid.dart';
void main() {
group('MailboxAPI.updateRightsForSubaddressing tests', () {
const postingRight = 'p';
final mailboxAPI = MailboxAPI(HttpClient(Dio()), const Uuid());
test('should add postingRight when action is allow and currentRights is empty', () {
final result = mailboxAPI.updateRightsForSubaddressing(MailboxSubaddressingAction.allow, []);
expect(result, contains(postingRight));
expect(result.length, 1);
});
test('should add postingRight when action is allow and currentRights does not contain postingRight', () {
final result = mailboxAPI.updateRightsForSubaddressing(MailboxSubaddressingAction.allow, ['r', 'w']);
expect(result, contains(postingRight));
expect(result.length, 3);
});
test('should not add postingRight if action is allow and postingRight already present', () {
final result = mailboxAPI.updateRightsForSubaddressing(MailboxSubaddressingAction.allow, ['r', postingRight, 'w']);
expect(result.where((right) => right == postingRight).length, 1);
expect(result.length, 3);
});
test('should remove postingRight if present and action is disallow', () {
final result = mailboxAPI.updateRightsForSubaddressing(MailboxSubaddressingAction.disallow, ['r', postingRight, 'w']);
expect(result, isNot(contains(postingRight)));
expect(result.length, 2);
});
test('should do nothing if postingRight is not present and action is disallow', () {
final result = mailboxAPI.updateRightsForSubaddressing(MailboxSubaddressingAction.disallow, ['r', 'w']);
expect(result, isNot(contains(postingRight)));
expect(result.length, 2);
});
test('should return empty list if action is disallow and currentRights is null', () {
final result = mailboxAPI.updateRightsForSubaddressing(MailboxSubaddressingAction.disallow, null);
expect(result, isEmpty);
});
test('should return list with only postingRight if action is allow and currentRights is null', () {
final result = mailboxAPI.updateRightsForSubaddressing(MailboxSubaddressingAction.allow, null);
expect(result, contains(postingRight));
expect(result.length, 1);
});
});
}
@@ -44,6 +44,7 @@ import 'package:tmail_ui_user/features/mailbox/domain/usecases/mark_as_mailbox_r
import 'package:tmail_ui_user/features/mailbox/domain/usecases/move_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/rename_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/subaddressing_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/subscribe_multiple_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart';
@@ -147,6 +148,7 @@ const fallbackGenerators = {
MockSpec<MoveMailboxInteractor>(),
MockSpec<SubscribeMailboxInteractor>(),
MockSpec<SubscribeMultipleMailboxInteractor>(),
MockSpec<SubaddressingInteractor>(),
MockSpec<CreateDefaultMailboxInteractor>(),
MockSpec<TreeBuilder>(),
MockSpec<VerifyNameInteractor>(),
@@ -251,6 +253,7 @@ void main() {
final moveMailboxInteractor = MockMoveMailboxInteractor();
final subscribeMailboxInteractor = MockSubscribeMailboxInteractor();
final subscribeMultipleMailboxInteractor = MockSubscribeMultipleMailboxInteractor();
final subaddressingInteractor = MockSubaddressingInteractor();
final createDefaultMailboxInteractor = MockCreateDefaultMailboxInteractor();
final treeBuilder = MockTreeBuilder();
final verifyNameInteractor = MockVerifyNameInteractor();
@@ -363,6 +366,7 @@ void main() {
moveMailboxInteractor,
subscribeMailboxInteractor,
subscribeMultipleMailboxInteractor,
subaddressingInteractor,
createDefaultMailboxInteractor,
treeBuilder,
verifyNameInteractor,
@@ -44,6 +44,7 @@ import 'package:tmail_ui_user/features/mailbox/domain/usecases/mark_as_mailbox_r
import 'package:tmail_ui_user/features/mailbox/domain/usecases/move_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/rename_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/subaddressing_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/subscribe_multiple_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart';
@@ -151,6 +152,7 @@ const fallbackGenerators = {
MockSpec<MoveMailboxInteractor>(),
MockSpec<SubscribeMailboxInteractor>(),
MockSpec<SubscribeMultipleMailboxInteractor>(),
MockSpec<SubaddressingInteractor>(),
MockSpec<CreateDefaultMailboxInteractor>(),
MockSpec<TreeBuilder>(),
MockSpec<VerifyNameInteractor>(),
@@ -240,6 +242,7 @@ void main() {
final moveMailboxInteractor = MockMoveMailboxInteractor();
final subscribeMailboxInteractor = MockSubscribeMailboxInteractor();
final subscribeMultipleMailboxInteractor = MockSubscribeMultipleMailboxInteractor();
final subaddressingInteractor = MockSubaddressingInteractor();
final createDefaultMailboxInteractor = MockCreateDefaultMailboxInteractor();
final treeBuilder = MockTreeBuilder();
final verifyNameInteractor = MockVerifyNameInteractor();
@@ -356,6 +359,7 @@ void main() {
moveMailboxInteractor,
subscribeMailboxInteractor,
subscribeMultipleMailboxInteractor,
subaddressingInteractor,
createDefaultMailboxInteractor,
treeBuilder,
verifyNameInteractor,