From 5f00d78dd4f51502c95d86ebd27163753e81aa19 Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 23 Apr 2025 12:33:04 +0700 Subject: [PATCH] TF-3683 Add integration test for case update draft email with message success toast Signed-off-by: dab246 --- ...l_with_message_success_toast_scenario.dart | 73 +++++++++++++++++++ ...mail_with_messsage_success_toast_test.dart | 9 +++ 2 files changed, 82 insertions(+) create mode 100644 integration_test/scenarios/composer/update_draft_email_with_message_success_toast_scenario.dart create mode 100644 integration_test/tests/compose/update_draft_email_with_messsage_success_toast_test.dart diff --git a/integration_test/scenarios/composer/update_draft_email_with_message_success_toast_scenario.dart b/integration_test/scenarios/composer/update_draft_email_with_message_success_toast_scenario.dart new file mode 100644 index 000000000..555886bdd --- /dev/null +++ b/integration_test/scenarios/composer/update_draft_email_with_message_success_toast_scenario.dart @@ -0,0 +1,73 @@ +import 'package:core/presentation/resources/image_paths.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:model/email/prefix_email_address.dart'; +import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; + +import '../../base/base_test_scenario.dart'; +import '../../robots/composer_robot.dart'; +import '../../robots/mailbox_menu_robot.dart'; +import '../../robots/thread_robot.dart'; + +class UpdateDraftEmailWithMessageSuccessToastScenario extends BaseTestScenario { + + const UpdateDraftEmailWithMessageSuccessToastScenario(super.$); + + @override + Future runTestLogic() async { + const email = String.fromEnvironment('BASIC_AUTH_EMAIL'); + const subject = 'Update draft email with message toast'; + const updatedSubject = 'New update draft email with message toast'; + + final threadRobot = ThreadRobot($); + final composerRobot = ComposerRobot($); + final mailboxMenuRobot = MailboxMenuRobot($); + final appLocalizations = AppLocalizations(); + final imagePaths = ImagePaths(); + + await threadRobot.openComposer(); + await _expectComposerViewVisible(); + + await composerRobot.grantContactPermission(); + await composerRobot.addRecipientIntoField( + prefixEmailAddress: PrefixEmailAddress.to, + email: email, + ); + await composerRobot.addSubject(subject); + await composerRobot.addContent(subject); + + await composerRobot.tapCloseComposer(imagePaths); + await $.pumpAndSettle(); + await _expectSaveDraftConfirmDialogVisible(); + + await composerRobot.tapSaveButtonOnSaveDraftConfirmDialog(appLocalizations); + await _expectSaveDraftEmailSuccessToast(appLocalizations); + await $.pumpAndSettle(); + + await threadRobot.openMailbox(); + await mailboxMenuRobot.openFolderByName( + appLocalizations.draftsMailboxDisplayName, + ); + await threadRobot.openEmailWithSubject(subject); + await _expectComposerViewVisible(); + + await composerRobot.grantContactPermission(); + await composerRobot.addSubject(updatedSubject); + await composerRobot.tapCloseComposer(imagePaths); + await $.pumpAndSettle(); + await _expectSaveDraftConfirmDialogVisible(); + + await composerRobot.tapSaveButtonOnSaveDraftConfirmDialog(appLocalizations); + await _expectSaveDraftEmailSuccessToast(appLocalizations); + } + + Future _expectComposerViewVisible() => expectViewVisible($(ComposerView)); + + Future _expectSaveDraftEmailSuccessToast(AppLocalizations appLocalizations) async { + await expectViewVisible($(find.text(appLocalizations.drafts_saved))); + } + + Future _expectSaveDraftConfirmDialogVisible() async { + await expectViewVisible($(#confirm_dialog_action)); + } +} \ No newline at end of file diff --git a/integration_test/tests/compose/update_draft_email_with_messsage_success_toast_test.dart b/integration_test/tests/compose/update_draft_email_with_messsage_success_toast_test.dart new file mode 100644 index 000000000..7ed08eefe --- /dev/null +++ b/integration_test/tests/compose/update_draft_email_with_messsage_success_toast_test.dart @@ -0,0 +1,9 @@ +import '../../base/test_base.dart'; +import '../../scenarios/composer/update_draft_email_with_message_success_toast_scenario.dart'; + +void main() { + TestBase().runPatrolTest( + description: 'Should see message success toast when edit draft email and save draft successfully', + scenarioBuilder: ($) => UpdateDraftEmailWithMessageSuccessToastScenario($), + ); +} \ No newline at end of file