diff --git a/integration_test/scenarios/search/search_email_with_sort_order_relevance_by_default_scenario.dart b/integration_test/scenarios/search/search_email_with_sort_order_relevance_by_default_scenario.dart new file mode 100644 index 000000000..8d490afd3 --- /dev/null +++ b/integration_test/scenarios/search/search_email_with_sort_order_relevance_by_default_scenario.dart @@ -0,0 +1,57 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/search_filters/search_filter_button.dart'; +import 'package:tmail_ui_user/features/search/email/presentation/search_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/search_robot.dart'; +import '../../robots/thread_robot.dart'; + +class SearchEmailWithSortOrderRelevanceByDefaultScenario + extends BaseTestScenario { + const SearchEmailWithSortOrderRelevanceByDefaultScenario(super.$); + + static const queryString = 'Relevance by default'; + static const listUsername = ['Alice', 'Brian', 'Charlotte', 'David', 'Emma']; + + @override + Future runTestLogic() async { + final listProvisioningEmail = listUsername + .map((username) => ProvisioningEmail( + toEmail: '${username.toLowerCase()}@example.com', + subject: queryString, + content: '$queryString to user $username', + )) + .toList(); + + await provisionEmail(listProvisioningEmail); + await $.pumpAndSettle(); + + final threadRobot = ThreadRobot($); + await threadRobot.openSearchView(); + await _expectSearchViewVisible(); + + final searchRobot = SearchRobot($); + await searchRobot.enterQueryString(queryString); + await searchRobot.tapOnShowAllResultsText(); + await _expectSearchResultEmailListVisible(); + + await searchRobot.scrollToEndListSearchFilter(); + await _expectRelevanceSortOrderButtonVisible(); + } + + Future _expectSearchViewVisible() async { + await expectViewVisible($(SearchEmailView)); + } + + Future _expectSearchResultEmailListVisible() async { + await expectViewVisible($(#search_email_list_notification_listener)); + } + + Future _expectRelevanceSortOrderButtonVisible() async { + await expectViewVisible( + $(SearchFilterButton).$(AppLocalizations().relevance), + ); + } +} diff --git a/integration_test/tests/search/search_email_with_sort_order_relevance_by_default_test.dart b/integration_test/tests/search/search_email_with_sort_order_relevance_by_default_test.dart new file mode 100644 index 000000000..34262ab79 --- /dev/null +++ b/integration_test/tests/search/search_email_with_sort_order_relevance_by_default_test.dart @@ -0,0 +1,9 @@ +import '../../base/test_base.dart'; +import '../../scenarios/search/search_email_with_sort_order_relevance_by_default_scenario.dart'; + +void main() { + TestBase().runPatrolTest( + description: 'Should see list email displayed by sort order `Relevance` by default when search email successfully', + scenarioBuilder: ($) => SearchEmailWithSortOrderRelevanceByDefaultScenario($), + ); +} \ No newline at end of file