TF-2764 Remove ViewAttachmentForWebInteractor

This commit is contained in:
dab246
2024-05-17 02:19:22 +07:00
committed by Dat H. Pham
parent 7524a97bc8
commit 450e0eb2ab
7 changed files with 52 additions and 483 deletions
@@ -2,28 +2,21 @@ import 'dart:ui';
import 'package:core/core.dart';
import 'package:dartz/dartz.dart' hide State;
import 'package:flutter/foundation.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:get/get.dart';
import 'package:http_parser/http_parser.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/capability/calendar_event_capability.dart';
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.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';
import 'package:jmap_dart_client/jmap/core/user_name.dart';
import 'package:jmap_dart_client/jmap/mail/calendar/calendar_event.dart';
import 'package:jmap_dart_client/jmap/mail/calendar/reply/calendar_event_accept_response.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
import 'package:tmail_ui_user/features/email/domain/model/event_action.dart';
import 'package:tmail_ui_user/features/email/domain/state/calendar_event_accept_state.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/calendar_event_reject_interactor.dart';
@@ -37,7 +30,6 @@ import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_int
import 'package:tmail_ui_user/features/email/domain/usecases/print_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/store_event_attendance_status_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/store_opened_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/view_attachment_for_web_interactor.dart';
import 'package:tmail_ui_user/features/email/presentation/controller/email_supervisor_controller.dart';
import 'package:tmail_ui_user/features/email/presentation/controller/single_email_controller.dart';
import 'package:tmail_ui_user/features/email/presentation/model/blob_calendar_event.dart';
@@ -71,7 +63,6 @@ const fallbackGenerators = {
MockSpec<DownloadAttachmentForWebInteractor>(),
MockSpec<GetAllIdentitiesInteractor>(),
MockSpec<StoreOpenedEmailInteractor>(),
MockSpec<ViewAttachmentForWebInteractor>(),
MockSpec<MailboxDashBoardController>(fallbackGenerators: fallbackGenerators),
MockSpec<EmailSupervisorController>(fallbackGenerators: fallbackGenerators),
MockSpec<DownloadManager>(fallbackGenerators: fallbackGenerators),
@@ -91,6 +82,7 @@ const fallbackGenerators = {
MockSpec<MaybeCalendarEventInteractor>(),
MockSpec<RejectCalendarEventInteractor>(),
MockSpec<StoreEventAttendanceStatusInteractor>(),
MockSpec<PrintUtils>(),
])
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
@@ -106,7 +98,6 @@ void main() {
MockDownloadAttachmentForWebInteractor();
final getAllIdentitiesInteractor = MockGetAllIdentitiesInteractor();
final storeOpenedEmailInteractor = MockStoreOpenedEmailInteractor();
final viewAttachmentForWebInteractor = MockViewAttachmentForWebInteractor();
final mailboxDashboardController = MockMailboxDashBoardController();
final emailSupervisorController = MockEmailSupervisorController();
final downloadManager = MockDownloadManager();
@@ -123,6 +114,7 @@ void main() {
final uuid = MockUuid();
final printEmailInteractor = MockPrintEmailInteractor();
final storeEventAttendanceStatusInteractor = MockStoreEventAttendanceStatusInteractor();
final printUtils = MockPrintUtils();
late SingleEmailController singleEmailController;
@@ -135,8 +127,6 @@ void main() {
),
}, {}, {}, UserName('data'), google, google, google, google, State('1'));
const testTaskId = 'taskId';
final testDownloadTaskId = DownloadTaskId(testTaskId);
final testBytes = Uint8List(123);
setUpAll(() {
Get.put<MailboxDashBoardController>(mailboxDashboardController);
@@ -157,6 +147,7 @@ void main() {
Get.put<ImagePaths>(imagePaths);
Get.put<ResponsiveUtils>(responsiveUtils);
Get.put<Uuid>(uuid);
Get.put<PrintUtils>(printUtils);
when(mailboxDashboardController.accountId).thenReturn(Rxn(testAccountId));
when(uuid.v4()).thenReturn(testTaskId);
@@ -174,115 +165,11 @@ void main() {
downloadAttachmentForWebInteractor,
getAllIdentitiesInteractor,
storeOpenedEmailInteractor,
viewAttachmentForWebInteractor,
printEmailInteractor,
storeEventAttendanceStatusInteractor,
);
});
group('single email controller', () {
test(
'should call execute on ViewAttachmentForWebInteractor '
'when viewAttachmentForWeb is called',
() {
// arrange
when(mailboxDashboardController.sessionCurrent).thenReturn(testSession);
final testAttachment = Attachment();
// act
singleEmailController.viewAttachmentForWeb(testAttachment);
// assert
verify(viewAttachmentForWebInteractor.execute(
any,
testAttachment,
testAccountId,
any,
any,
)).called(1);
},
);
test(
'should trigger mailboxDashBoardController.deleteDownloadTask & downloadManager.openDownloadedFileWeb'
'when attachment mime type is pdf',
() async {
// arrange
const attachmentName = 'test_name.pdf';
final testAttachment = Attachment(
type: MediaType('application', 'pdf'),
name: attachmentName);
when(mailboxDashboardController.sessionCurrent).thenReturn(testSession);
when(viewAttachmentForWebInteractor.execute(
testDownloadTaskId,
testAttachment,
testAccountId,
any,
any,
)).thenAnswer((_) => Stream.value(
right(ViewAttachmentForWebSuccess(
testDownloadTaskId,
testAttachment,
testBytes,
)),
));
// act
singleEmailController.viewAttachmentForWeb(testAttachment);
// assert
await untilCalled(mailboxDashboardController.deleteDownloadTask(any));
verify(mailboxDashboardController.deleteDownloadTask(testDownloadTaskId))
.called(1);
await untilCalled(downloadManager.openDownloadedFileWeb(any, any, any));
verify(downloadManager.openDownloadedFileWeb(
testBytes,
Constant.pdfMimeType,
attachmentName,
)).called(1);
},
);
test(
'should trigger mailboxDashBoardController.deleteDownloadTask & downloadManager.createAnchorElementDownloadFileWeb'
'when attachment mime type is not pdf',
() async {
// arrange
const testFileName = 'test_file.txt';
final testAttachment = Attachment(name: testFileName);
when(mailboxDashboardController.sessionCurrent).thenReturn(testSession);
when(viewAttachmentForWebInteractor.execute(
testDownloadTaskId,
testAttachment,
testAccountId,
any,
any,
)).thenAnswer((_) => Stream.value(
right(ViewAttachmentForWebSuccess(
testDownloadTaskId,
testAttachment,
testBytes,
)),
));
// act
singleEmailController.viewAttachmentForWeb(testAttachment);
// assert
await untilCalled(mailboxDashboardController.deleteDownloadTask(any));
verify(mailboxDashboardController.deleteDownloadTask(testDownloadTaskId))
.called(1);
await untilCalled(
downloadManager.createAnchorElementDownloadFileWeb(any, any),
);
verify(downloadManager.createAnchorElementDownloadFileWeb(
testBytes,
testFileName,
)).called(1);
},
);
});
group('calendar event reply test:', () {
final blobId = Id('abc123');
final emailId = EmailId(Id('xyz123'));