TF-2821 calendar event maybe integrate single email controller
This commit is contained in:
@@ -10,6 +10,7 @@ import 'package:tmail_ui_user/features/email/data/network/calendar_event_api.dar
|
||||
import 'package:tmail_ui_user/features/email/data/repository/calendar_event_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/repository/calendar_event_repository.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/calendar_event_accept_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/maybe_calendar_event_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/parse_calendar_event_interactor.dart';
|
||||
import 'package:tmail_ui_user/main/exceptions/cache_exception_thrower.dart';
|
||||
import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart';
|
||||
@@ -36,6 +37,7 @@ class CalendarEventInteractorBindings extends InteractorsBindings {
|
||||
void bindingsInteractor() {
|
||||
Get.lazyPut(() => ParseCalendarEventInteractor(Get.find<CalendarEventRepository>()));
|
||||
Get.lazyPut(() => AcceptCalendarEventInteractor(Get.find<CalendarEventRepository>()));
|
||||
Get.lazyPut(() => MaybeCalendarEventInteractor(Get.find<CalendarEventRepository>()));
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -37,6 +37,7 @@ import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/send_receipt_to_sender_request.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/calendar_event_accept_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/calendar_event_maybe_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/calendar_event_reply_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/download_attachment_for_web_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/download_attachments_state.dart';
|
||||
@@ -51,6 +52,7 @@ import 'package:tmail_ui_user/features/email/domain/state/send_receipt_to_sender
|
||||
import 'package:tmail_ui_user/features/email/domain/state/unsubscribe_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/view_attachment_for_web_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/calendar_event_accept_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/maybe_calendar_event_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/download_attachment_for_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/download_attachments_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/export_attachment_interactor.dart';
|
||||
@@ -124,6 +126,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
SendReceiptToSenderInteractor? _sendReceiptToSenderInteractor;
|
||||
ParseCalendarEventInteractor? _parseCalendarEventInteractor;
|
||||
AcceptCalendarEventInteractor? _acceptCalendarEventInteractor;
|
||||
MaybeCalendarEventInteractor? _maybeCalendarEventInteractor;
|
||||
|
||||
final emailContents = RxnString();
|
||||
final attachments = <Attachment>[].obs;
|
||||
@@ -389,6 +392,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
_sendReceiptToSenderInteractor = getBinding<SendReceiptToSenderInteractor>();
|
||||
_parseCalendarEventInteractor = getBinding<ParseCalendarEventInteractor>();
|
||||
_acceptCalendarEventInteractor = getBinding<AcceptCalendarEventInteractor>();
|
||||
_maybeCalendarEventInteractor = getBinding<MaybeCalendarEventInteractor>();
|
||||
}
|
||||
|
||||
void _injectCalendarEventBindings(Session? session, AccountId? accountId) {
|
||||
@@ -1691,20 +1695,35 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
case EventActionType.yes:
|
||||
_acceptCalendarEventAction();
|
||||
break;
|
||||
case EventActionType.maybe:
|
||||
_maybeCalendarEventAction();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void _acceptCalendarEventAction() {
|
||||
if (_acceptCalendarEventInteractor == null || _displayingEventBlobId == null) return;
|
||||
|
||||
if (mailboxDashBoardController.accountId.value != null) {
|
||||
if (_acceptCalendarEventInteractor == null
|
||||
|| _displayingEventBlobId == null
|
||||
|| mailboxDashBoardController.accountId.value == null) {
|
||||
consumeState(Stream.value(Left(CalendarEventAcceptFailure())));
|
||||
} else {
|
||||
consumeState(_acceptCalendarEventInteractor!.execute(
|
||||
mailboxDashBoardController.accountId.value!,
|
||||
{_displayingEventBlobId!}));
|
||||
}
|
||||
}
|
||||
|
||||
void _maybeCalendarEventAction() {
|
||||
if (_maybeCalendarEventInteractor == null
|
||||
|| _displayingEventBlobId == null
|
||||
|| mailboxDashBoardController.accountId.value == null) {
|
||||
consumeState(Stream.value(Left(CalendarEventMaybeFailure())));
|
||||
} else {
|
||||
consumeState(Stream.value(Left(CalendarEventAcceptFailure())));
|
||||
consumeState(_maybeCalendarEventInteractor!.execute(
|
||||
mailboxDashBoardController.accountId.value!,
|
||||
{_displayingEventBlobId!}));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ import 'package:tmail_ui_user/features/email/domain/model/event_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/parse_calendar_event_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/view_attachment_for_web_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/calendar_event_accept_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/maybe_calendar_event_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/download_attachment_for_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/download_attachments_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/export_attachment_interactor.dart';
|
||||
@@ -77,6 +78,7 @@ const fallbackGenerators = {
|
||||
MockSpec<Uuid>(),
|
||||
MockSpec<PrintEmailInteractor>(),
|
||||
MockSpec<AcceptCalendarEventInteractor>(),
|
||||
MockSpec<MaybeCalendarEventInteractor>(),
|
||||
])
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
@@ -293,5 +295,32 @@ void main() {
|
||||
verify(acceptCalendarEventInteractor.execute(testAccountId, {blobId})).called(1);
|
||||
});
|
||||
});
|
||||
|
||||
group('maybe test:', () {
|
||||
final maybeCalendarEventInteractor = MockMaybeCalendarEventInteractor();
|
||||
|
||||
test('should call execute on AcceptCalendarEventInteractor '
|
||||
'when onCalendarEventReplyAction is called on EventActionType.yes', () async {
|
||||
// arrange
|
||||
when(mailboxDashboardController.selectedEmail).thenReturn(Rxn(null));
|
||||
when(mailboxDashboardController.emailUIAction).thenReturn(Rxn(null));
|
||||
when(mailboxDashboardController.viewState).thenReturn(Rx(Right(UIState.idle)));
|
||||
singleEmailController.onInit();
|
||||
Get.put<MaybeCalendarEventInteractor>(maybeCalendarEventInteractor);
|
||||
mailboxDashboardController.accountId.refresh();
|
||||
singleEmailController.handleSuccessViewState(
|
||||
ParseCalendarEventSuccess([
|
||||
BlobCalendarEvent(
|
||||
blobId: blobId,
|
||||
calendarEventList: [calendarEvent])]));
|
||||
|
||||
// act
|
||||
singleEmailController.onCalendarEventReplyAction(EventActionType.maybe);
|
||||
await untilCalled(maybeCalendarEventInteractor.execute(any, any));
|
||||
|
||||
// assert
|
||||
verify(maybeCalendarEventInteractor.execute(testAccountId, {blobId})).called(1);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user