From 81598a79c20a9630406e1c5ef63eb5e841e9acc2 Mon Sep 17 00:00:00 2001 From: dab246 Date: Mon, 10 Feb 2025 16:18:35 +0700 Subject: [PATCH] TF-3461 Add integration test for sort by message size Signed-off-by: dab246 --- ...search_email_with_sort_order_scenario.dart | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/integration_test/scenarios/search_email_with_sort_order_scenario.dart b/integration_test/scenarios/search_email_with_sort_order_scenario.dart index cd66d5da7..1ddb07952 100644 --- a/integration_test/scenarios/search_email_with_sort_order_scenario.dart +++ b/integration_test/scenarios/search_email_with_sort_order_scenario.dart @@ -2,6 +2,7 @@ import 'package:collection/collection.dart'; import 'package:core/domain/extensions/list_datetime_extension.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:jmap_dart_client/jmap/core/unsigned_int.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart'; import 'package:tmail_ui_user/features/search/email/presentation/search_email_view.dart'; import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart'; @@ -77,8 +78,10 @@ class SearchEmailWithSortOrderScenario extends BaseTestScenario { case EmailSortOrderType.relevance: break; case EmailSortOrderType.sizeAscending: + await _expectEmailListSortedCorrectBySizeAscending(listUsername: listUsername); break; case EmailSortOrderType.sizeDescending: + await _expectEmailListSortedCorrectBySizeDescending(listUsername: listUsername); break; } } @@ -188,4 +191,41 @@ class SearchEmailWithSortOrderScenario extends BaseTestScenario { expect(listReceiveAtTime.isSortedByOldestFirst(), isTrue); } + + Future _expectEmailListSortedCorrectBySizeAscending({ + required List listUsername, + }) async { + final listEmailTile = $.tester + .widgetList(find.byType(EmailTileBuilder)); + + List sizeList = listEmailTile + .mapIndexed((index, emailTile) => listEmailTile.elementAt(index).presentationEmail.size) + .whereNotNull() + .toList(); + + expect(_isSortedAscending(sizeList), isTrue); + } + + Future _expectEmailListSortedCorrectBySizeDescending({ + required List listUsername, + }) async { + final listEmailTile = $.tester + .widgetList(find.byType(EmailTileBuilder)); + + List sizeList = listEmailTile + .mapIndexed((index, emailTile) => listEmailTile.elementAt(index).presentationEmail.size) + .whereNotNull() + .toList(); + + expect(_isSortedAscending(sizeList), isFalse); + } + + bool _isSortedAscending(List list) { + for (int i = 0; i < list.length - 1; i++) { + if (list[i].value > list[i + 1].value) { + return false; + } + } + return true; + } } \ No newline at end of file