diff --git a/integration_test/robots/email_robot.dart b/integration_test/robots/email_robot.dart index 622d86c23..41bf02272 100644 --- a/integration_test/robots/email_robot.dart +++ b/integration_test/robots/email_robot.dart @@ -52,4 +52,8 @@ class EmailRobot extends CoreRobot { Future tapEmailDetailedDeleteEmailButton() async { await $(#email_detailed_delete_email_button).tap(); } + + Future tapMarkAsSpamOptionInContextMenu() async { + await $(#moveToSpam_action).tap(); + } } \ No newline at end of file diff --git a/integration_test/scenarios/email_detailed/delete_email_scenario.dart b/integration_test/scenarios/email_detailed/delete_email_scenario.dart index ead5008bb..0cd96991d 100644 --- a/integration_test/scenarios/email_detailed/delete_email_scenario.dart +++ b/integration_test/scenarios/email_detailed/delete_email_scenario.dart @@ -44,14 +44,14 @@ class DeleteEmailScenario extends BaseTestScenario { await threadRobot.openMailbox(); await mailboxMenuRobot.openFolderByName(appLocalizations.trashMailboxDisplayName); - await _expectEmailWithSubjectInDestinationFolderVisible(subject); + await _expectEmailWithSubjectInTrashFolderVisible(subject); } void _expectEmailViewInvisible() { expect($(EmailView).visible, isFalse); } - Future _expectEmailWithSubjectInDestinationFolderVisible(String subject) async { + Future _expectEmailWithSubjectInTrashFolderVisible(String subject) async { await expectViewVisible($(subject)); } } \ No newline at end of file diff --git a/integration_test/scenarios/email_detailed/mark_as_spam_email_scenario.dart b/integration_test/scenarios/email_detailed/mark_as_spam_email_scenario.dart new file mode 100644 index 000000000..09a559263 --- /dev/null +++ b/integration_test/scenarios/email_detailed/mark_as_spam_email_scenario.dart @@ -0,0 +1,64 @@ + +import 'package:flutter_test/flutter_test.dart'; +import 'package:tmail_ui_user/features/email/presentation/email_view.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/mailbox_menu_robot.dart'; +import '../../robots/thread_robot.dart'; + +class MarkAsSpamEmailScenario extends BaseTestScenario { + + const MarkAsSpamEmailScenario(super.$); + + @override + Future runTestLogic() async { + const subject = 'Mark as spam email'; + const emailUser = String.fromEnvironment('BASIC_AUTH_EMAIL'); + final threadRobot = ThreadRobot($); + final emailRobot = EmailRobot($); + final mailboxMenuRobot = MailboxMenuRobot($); + final appLocalizations = AppLocalizations(); + + await provisionEmail( + [ + ProvisioningEmail( + toEmail: emailUser, + subject: subject, + content: subject, + ), + ], + requestReadReceipt: false, + ); + await $.pumpAndSettle(); + + await threadRobot.openEmailWithSubject(subject); + await $.pumpAndSettle(); + _expectEmailDetailedMoreButtonVisible(); + + await emailRobot.tapEmailDetailedMoreButton(); + await $.pumpAndSettle(duration: const Duration(seconds: 2)); + + await emailRobot.tapMarkAsSpamOptionInContextMenu(); + await $.pumpAndSettle(duration: const Duration(seconds: 3)); + _expectEmailViewInvisible(); + + await threadRobot.openMailbox(); + await mailboxMenuRobot.openFolderByName(appLocalizations.spamMailboxDisplayName); + await _expectEmailWithSubjectInSpamFolderVisible(subject); + } + + void _expectEmailDetailedMoreButtonVisible() { + expect($(#email_detailed_more_button), findsOneWidget); + } + + void _expectEmailViewInvisible() { + expect($(EmailView).visible, isFalse); + } + + Future _expectEmailWithSubjectInSpamFolderVisible(String subject) async { + await expectViewVisible($(subject)); + } +} \ No newline at end of file diff --git a/integration_test/tests/email_detailed/mark_as_spam_email_when_open_detailed_email_test.dart b/integration_test/tests/email_detailed/mark_as_spam_email_when_open_detailed_email_test.dart new file mode 100644 index 000000000..263b14331 --- /dev/null +++ b/integration_test/tests/email_detailed/mark_as_spam_email_when_open_detailed_email_test.dart @@ -0,0 +1,9 @@ +import '../../base/test_base.dart'; +import '../../scenarios/email_detailed/mark_as_spam_email_scenario.dart'; + +void main() { + TestBase().runPatrolTest( + description: 'Should see email in Spam folder when open detailed email and mark as spam email successfully', + scenarioBuilder: ($) => MarkAsSpamEmailScenario($), + ); +} \ No newline at end of file