import 'package:core/presentation/views/search/search_bar_view.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:labels/extensions/label_extension.dart'; import 'package:tmail_ui_user/features/base/widget/compose_floating_button.dart'; import 'package:tmail_ui_user/features/thread/presentation/thread_view.dart'; import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart'; import 'package:tmail_ui_user/features/thread/presentation/widgets/scroll_to_top_button_widget.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import '../base/core_robot.dart'; class ThreadRobot extends CoreRobot { ThreadRobot(super.$); Future openComposer() async { await $(ComposeFloatingButton).$(InkWell).tap(); } Future openSearchView() async { await $(SearchBarView).$(InkWell).tap(); } Future tapOnSearchField() async { await $(ThreadView).$(SearchBarView).tap(); } Future openEmailWithSubject(String subject) async { final email = $(EmailTileBuilder) .which((view) => view.presentationEmail.subject == subject); await $.waitUntilVisible(email); await email.tap(); await $.pump(const Duration(seconds: 2)); } Future openEmailWithLabel(String labelDisplayName) async { final email = $(EmailTileBuilder).which( (view) => view.labels ?.any((label) => label.safeDisplayName == labelDisplayName) == true, ); await $.waitUntilVisible(email); await email.tap(); await $.pump(const Duration(seconds: 2)); } Future openMailbox() async { await $(#mobile_mailbox_menu_button).tap(); } Future tapEmptyTrashBanner() => $(' ${AppLocalizations().empty_trash_now}').tap(); Future tapDeleteAllButtonOnEmptyTrashConfirmDialog( AppLocalizations appLocalizations, ) => $(appLocalizations.delete_all).tap(); Future scrollToEmailWithSubject(String subject) async { await $.scrollUntilVisible(finder: $(subject), delta: 300); await $.pumpAndSettle(); } Future scrollToTop() async { await $(ScrollToTopButtonWidget).$(InkWell).tap(); await $.pumpAndSettle(); } Future openQuickFilter() async { await $(#mobile_filter_message_button).tap(); } Future selectAttachmentFilter() async { await $(#attachments_filter).tap(); } Future selectUnreadFilter() async { await $(#unread_filter).tap(); } Future selectStarredFilter() async { await $(#starred_filter).tap(); } Future pullToRefreshByEmailSubject(String subject) async { await $(subject).waitUntilVisible(); await $.tester.fling( $(subject), const Offset(0, 300), 1000, ); await $.pumpAndSettle(); } Future tapOnMailboxWithName(String name) async { await $(name).tap(); await $.pumpAndSettle(); } Future confirmEmptyTrash() async { await $(AppLocalizations().delete_all).tap(); } Future tapEmptySpamBanner() async { await $(' ${AppLocalizations().deleteAllSpamEmailsNow}').tap(); } Future confirmEmptySpam() async { await $(AppLocalizations().delete_all).tap(); } Future tapEmptyTrashAfterLongPress() async { await $(AppLocalizations().emptyTrash).tap(); } Future tapConfirmEmptyTrashAfterLongPress() async { await $(AppLocalizations().delete).tap(); await $.pumpAndSettle(duration: const Duration(seconds: 2)); } Future tapLabelAsButton() async { await $(#moreAction_selected_email_button).tap(); await $.pumpAndTrySettle(); await $(#labelAs_action).tap(); } Future tapEmptySpamAfterLongPress() async { await $(AppLocalizations().deleteAllSpamEmails).tap(); } Future longPressEmailWithSubject(String subject) async { await $(subject).longPress(); } Future moveEmailToMailboxWithName(String mailboxName) async { await $(#moreAction_selected_email_button).tap(); await $.pumpAndTrySettle(); await $(#moveToMailbox_action).tap(); await $.pumpAndTrySettle(); await $(mailboxName).tap(); await $.pumpAndTrySettle(); } Future moveEmailToTrash() async { await $(#moveToTrash_selected_email_button).tap(); await $.pumpAndTrySettle(); } Future tapMarkAsReadButton() async { await $(#markAsRead_selected_email_button).tap(); await $.pumpAndTrySettle(); } Future tapMarkAsStarAction() async { await $(#moreAction_selected_email_button).tap(); await $.pumpAndTrySettle(); await $(#markAsStarred_action).tap(); await $.pumpAndTrySettle(); } Future tapMarkAsSpamAction() async { await $(#moreAction_selected_email_button).tap(); await $.pumpAndTrySettle(); await $(#moveToSpam_action).tap(); await $.pumpAndTrySettle(); } }