diff --git a/integration_test/robots/thread_robot.dart b/integration_test/robots/thread_robot.dart index 02ce25a6b..d2b4dd753 100644 --- a/integration_test/robots/thread_robot.dart +++ b/integration_test/robots/thread_robot.dart @@ -107,4 +107,19 @@ class ThreadRobot extends CoreRobot { Future tapEmptySpamAfterLongPress() async { await $(AppLocalizations().deleteAllSpamEmails).tap(); } + + Future longPressEmailWithSubject(String subject) async { + await $(subject).longPress(); + } + + Future moveEmailToMailboxWithName(String mailboxName) async { + await $(#move_selected_email_to_mailbox_button).tap(); + await $(mailboxName).tap(); + await $.pumpAndSettle(); + } + + Future moveEmailToTrash() async { + await $(#delete_selected_email_button).tap(); + await $.pumpAndSettle(); + } } \ No newline at end of file diff --git a/integration_test/scenarios/mailbox/mailbox_move_email_scenario.dart b/integration_test/scenarios/mailbox/mailbox_move_email_scenario.dart new file mode 100644 index 000000000..13b71cbb7 --- /dev/null +++ b/integration_test/scenarios/mailbox/mailbox_move_email_scenario.dart @@ -0,0 +1,53 @@ +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; + +import '../../base/base_test_scenario.dart'; +import '../../models/provisioning_email.dart'; +import '../../robots/mailbox_menu_robot.dart'; +import '../../robots/thread_robot.dart'; + +class MailboxMoveEmailScenario extends BaseTestScenario { + const MailboxMoveEmailScenario(super.$); + + @override + Future runTestLogic() async { + const email = String.fromEnvironment('BASIC_AUTH_EMAIL'); + const templatesSubject = 'email to templates'; + const trashSubject = 'email to trash'; + + final threadRobot = ThreadRobot($); + final mailboxMenuRobot = MailboxMenuRobot($); + final appLocalizations = AppLocalizations(); + + await provisionEmail([ + ProvisioningEmail( + toEmail: email, + subject: templatesSubject, + content: '' + ), + ProvisioningEmail( + toEmail: email, + subject: trashSubject, + content: '', + ), + ]); + await $.pumpAndSettle(duration: const Duration(seconds: 2)); + + await threadRobot.longPressEmailWithSubject(templatesSubject); + await threadRobot.moveEmailToMailboxWithName(appLocalizations.templatesMailboxDisplayName); + await threadRobot.openMailbox(); + await mailboxMenuRobot.openFolderByName(appLocalizations.templatesMailboxDisplayName); + await _expectEmailWithSubjectVisible(templatesSubject); + await threadRobot.openMailbox(); + await mailboxMenuRobot.openFolderByName(appLocalizations.inboxMailboxDisplayName); + + await threadRobot.longPressEmailWithSubject(trashSubject); + await threadRobot.moveEmailToTrash(); + await threadRobot.openMailbox(); + await mailboxMenuRobot.openFolderByName(appLocalizations.trashMailboxDisplayName); + await _expectEmailWithSubjectVisible(trashSubject); + } + + Future _expectEmailWithSubjectVisible(String subject) async { + await expectViewVisible($(subject)); + } +} diff --git a/integration_test/tests/mailbox/mailbox_move_email_test.dart b/integration_test/tests/mailbox/mailbox_move_email_test.dart new file mode 100644 index 000000000..11b9a9ecd --- /dev/null +++ b/integration_test/tests/mailbox/mailbox_move_email_test.dart @@ -0,0 +1,9 @@ +import '../../base/test_base.dart'; +import '../../scenarios/mailbox/mailbox_move_email_scenario.dart'; + +void main() { + TestBase().runPatrolTest( + description: 'Should move email to mailbox successfully', + scenarioBuilder: ($) => MailboxMoveEmailScenario($), + ); +}