import 'package:flutter_test/flutter_test.dart'; import 'package:model/extensions/presentation_mailbox_extension.dart'; import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/trailing_mailbox_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/mailbox_menu_robot.dart'; import '../../robots/thread_robot.dart'; class MoveFolderContentScenario extends BaseTestScenario { const MoveFolderContentScenario(super.$); @override Future runTestLogic() async { const email = String.fromEnvironment('BASIC_AUTH_EMAIL'); const emailSubject = 'Move folder content'; final threadRobot = ThreadRobot($); final mailboxMenuRobot = MailboxMenuRobot($); final appLocalizations = AppLocalizations(); final listEmails = List.generate( 40, (_) => ProvisioningEmail( toEmail: email, subject: emailSubject, content: '', ), ); await provisionEmail(listEmails); await $.pumpAndTrySettle(duration: const Duration(seconds: 2)); await threadRobot.openMailbox(); await $.pumpAndTrySettle(); _expectInboxUnreadCountVisible(); await mailboxMenuRobot.longPressMailboxWithName( appLocalizations.inboxMailboxDisplayName, ); await mailboxMenuRobot.tapMoveFolderContentAction( appLocalizations.templatesMailboxDisplayName, ); await $.pumpAndTrySettle(duration: const Duration(seconds: 3)); await threadRobot.openMailbox(); await $.pumpAndTrySettle(); await mailboxMenuRobot.openFolderByName( appLocalizations.templatesMailboxDisplayName, ); await $.pumpAndTrySettle(); await _expectEmailWithSubjectVisible(emailSubject); await threadRobot.openMailbox(); await $.pumpAndTrySettle(); await mailboxMenuRobot.openFolderByName( appLocalizations.inboxMailboxDisplayName, ); await $.pumpAndTrySettle(); await _expectEmailWithSubjectInVisible(emailSubject); } Future _expectEmailWithSubjectVisible(String subject) async { await expectViewVisible($(subject)); } Future _expectEmailWithSubjectInVisible(String subject) async { await expectViewInvisible($(subject)); } void _expectInboxUnreadCountVisible() { expect( $(TrailingMailboxItemWidget).which((widget) { final mailbox = widget.mailboxNode.item; return mailbox.role == PresentationMailbox.roleInbox && mailbox.countUnreadEmails > 0; }), findsOneWidget, ); } }