From 5ef01d299f0ddfc100f6c4ec35ab4bf33f859219 Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 18 Mar 2025 09:58:25 +0700 Subject: [PATCH] TF-3563 Add integration test for case download attachment in EmailView Signed-off-by: dab246 --- integration_test/robots/email_robot.dart | 6 ++ .../export_attachment_scenario.dart | 61 +++++++++++++++++++ .../export_attachment_test.dart | 9 +++ 3 files changed, 76 insertions(+) create mode 100644 integration_test/scenarios/email_detailed/export_attachment_scenario.dart create mode 100644 integration_test/tests/email_detailed/export_attachment_test.dart diff --git a/integration_test/robots/email_robot.dart b/integration_test/robots/email_robot.dart index afeb98d4c..92f870235 100644 --- a/integration_test/robots/email_robot.dart +++ b/integration_test/robots/email_robot.dart @@ -1,4 +1,6 @@ +import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:tmail_ui_user/features/email/presentation/widgets/attachment_item_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/email_view_back_button.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/information_sender_and_receiver_builder.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; @@ -77,4 +79,8 @@ class EmailRobot extends CoreRobot { Future longPressSenderEmailAddress(String email) async { await $(InformationSenderAndReceiverBuilder).$(email).longPress(); } + + Future onTapAttachmentItem() async { + await $(AttachmentItemWidget).$(InkWell).tap(); + } } \ No newline at end of file diff --git a/integration_test/scenarios/email_detailed/export_attachment_scenario.dart b/integration_test/scenarios/email_detailed/export_attachment_scenario.dart new file mode 100644 index 000000000..67f252e53 --- /dev/null +++ b/integration_test/scenarios/email_detailed/export_attachment_scenario.dart @@ -0,0 +1,61 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:tmail_ui_user/features/email/presentation/email_view.dart'; +import 'package:tmail_ui_user/features/email/presentation/widgets/attachment_item_widget.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; + +import '../../base/base_test_scenario.dart'; +import '../../models/provisioning_email.dart'; +import '../../robots/email_robot.dart'; +import '../../robots/thread_robot.dart'; + +class ExportAttachmentScenario extends BaseTestScenario { + + const ExportAttachmentScenario(super.$); + + @override + Future runTestLogic() async { + const subject = 'export attachment'; + const attachmentContent = 'attachment content'; + const emailUser = String.fromEnvironment('BASIC_AUTH_EMAIL'); + final threadRobot = ThreadRobot($); + final emailRobot = EmailRobot($); + final appLocalizations = AppLocalizations(); + + final attachmentFile = await preparingTxtFile(attachmentContent); + await provisionEmail( + [ + ProvisioningEmail( + toEmail: emailUser, + subject: subject, + content: subject, + attachmentPaths: [attachmentFile.path], + ), + ], + requestReadReceipt: false, + ); + await $.pumpAndSettle(); + + await threadRobot.openEmailWithSubject(subject); + await $.pumpAndSettle(); + _expectAttachmentVisible(); + + await emailRobot.onTapAttachmentItem(); + await $.pumpAndSettle(); + + await $.native.pressBack(); + _expectEmailViewVisible(); + _expectExportDialogLoadingInvisible(appLocalizations); + } + + void _expectAttachmentVisible() { + expect($(AttachmentItemWidget), findsOneWidget); + } + + void _expectEmailViewVisible() { + expect($(EmailView).visible, isTrue); + } + + void _expectExportDialogLoadingInvisible(AppLocalizations appLocalizations) { + expect($(appLocalizations.preparing_to_export).visible, isFalse); + } +} \ No newline at end of file diff --git a/integration_test/tests/email_detailed/export_attachment_test.dart b/integration_test/tests/email_detailed/export_attachment_test.dart new file mode 100644 index 000000000..114a3b608 --- /dev/null +++ b/integration_test/tests/email_detailed/export_attachment_test.dart @@ -0,0 +1,9 @@ +import '../../base/test_base.dart'; +import '../../scenarios/email_detailed/export_attachment_scenario.dart'; + +void main() { + TestBase().runPatrolTest( + description: 'Should auto preview attachment when export attachment successfully', + scenarioBuilder: ($) => ExportAttachmentScenario($), + ); +} \ No newline at end of file