22import 'package:collection/collection.dart' ;
33import 'package:core/domain/extensions/list_datetime_extension.dart' ;
44import 'package:flutter_test/flutter_test.dart' ;
5+ import 'package:jmap_dart_client/jmap/core/unsigned_int.dart' ;
56import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart' ;
67import 'package:tmail_ui_user/features/search/email/presentation/search_email_view.dart' ;
78import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart' ;
@@ -77,8 +78,10 @@ class SearchEmailWithSortOrderScenario extends BaseTestScenario {
7778 case EmailSortOrderType .relevance:
7879 break ;
7980 case EmailSortOrderType .sizeAscending:
81+ await _expectEmailListSortedCorrectBySizeAscending (listUsername: listUsername);
8082 break ;
8183 case EmailSortOrderType .sizeDescending:
84+ await _expectEmailListSortedCorrectBySizeDescending (listUsername: listUsername);
8285 break ;
8386 }
8487 }
@@ -188,4 +191,41 @@ class SearchEmailWithSortOrderScenario extends BaseTestScenario {
188191
189192 expect (listReceiveAtTime.isSortedByOldestFirst (), isTrue);
190193 }
194+
195+ Future <void > _expectEmailListSortedCorrectBySizeAscending ({
196+ required List <String > listUsername,
197+ }) async {
198+ final listEmailTile = $.tester
199+ .widgetList <EmailTileBuilder >(find.byType (EmailTileBuilder ));
200+
201+ List <UnsignedInt > sizeList = listEmailTile
202+ .mapIndexed ((index, emailTile) => listEmailTile.elementAt (index).presentationEmail.size)
203+ .whereNotNull ()
204+ .toList ();
205+
206+ expect (_isSortedAscending (sizeList), isTrue);
207+ }
208+
209+ Future <void > _expectEmailListSortedCorrectBySizeDescending ({
210+ required List <String > listUsername,
211+ }) async {
212+ final listEmailTile = $.tester
213+ .widgetList <EmailTileBuilder >(find.byType (EmailTileBuilder ));
214+
215+ List <UnsignedInt > sizeList = listEmailTile
216+ .mapIndexed ((index, emailTile) => listEmailTile.elementAt (index).presentationEmail.size)
217+ .whereNotNull ()
218+ .toList ();
219+
220+ expect (_isSortedAscending (sizeList), isFalse);
221+ }
222+
223+ bool _isSortedAscending (List <UnsignedInt > list) {
224+ for (int i = 0 ; i < list.length - 1 ; i++ ) {
225+ if (list[i].value > list[i + 1 ].value) {
226+ return false ;
227+ }
228+ }
229+ return true ;
230+ }
191231}
0 commit comments