@@ -982,6 +982,108 @@ void main() {
982982 );
983983 }
984984
985+ group ('confirmation dialog' , () {
986+ testWidgets ('CombinedFeedNarrow: show dialog' , (tester) async {
987+ final message = eg.streamMessage (flags: []);
988+ final unreadMsgs = eg.unreadMsgs (channels: [
989+ UnreadChannelSnapshot (topic: message.topic,
990+ streamId: message.streamId, unreadMessageIds: [message.id])
991+ ]);
992+ final narrow = CombinedFeedNarrow ();
993+ await setupMessageListPage (tester,
994+ narrow: narrow, messages: [message], unreadMsgs: unreadMsgs);
995+ check (isMarkAsReadButtonVisible (tester)).isTrue ();
996+
997+ await tester.tap (find.byType (MarkAsReadWidget ));
998+ await tester.pump ();
999+
1000+ final unreadCount = store.unreads.countInNarrow (narrow);
1001+ checkConfirmDialog (tester, unreadCount);
1002+ });
1003+
1004+ testWidgets ('MentionsNarrow: show dialog' , (tester) async {
1005+ final message = eg.streamMessage (flags: []);
1006+ final unreadMsgs = eg.unreadMsgs (mentions: [message.id]);
1007+ final narrow = MentionsNarrow ();
1008+ await setupMessageListPage (tester,
1009+ narrow: narrow, messages: [message], unreadMsgs: unreadMsgs);
1010+ check (isMarkAsReadButtonVisible (tester)).isTrue ();
1011+
1012+ await tester.tap (find.byType (MarkAsReadWidget ));
1013+ await tester.pump ();
1014+
1015+ final unreadCount = store.unreads.countInNarrow (narrow);
1016+ checkConfirmDialog (tester, unreadCount);
1017+ });
1018+
1019+ testWidgets ('ChannelNarrow: show dialog' , (tester) async {
1020+ final message = eg.streamMessage (flags: []);
1021+ final unreadMsgs = eg.unreadMsgs (channels: [
1022+ UnreadChannelSnapshot (topic: message.topic,
1023+ streamId: message.streamId, unreadMessageIds: [message.id])
1024+ ]);
1025+ final narrow = ChannelNarrow (message.streamId);
1026+ await setupMessageListPage (tester,
1027+ narrow: narrow, messages: [message], unreadMsgs: unreadMsgs);
1028+ check (isMarkAsReadButtonVisible (tester)).isTrue ();
1029+
1030+ await tester.tap (find.byType (MarkAsReadWidget ));
1031+ await tester.pump ();
1032+
1033+ final unreadCount = store.unreads.countInNarrow (narrow);
1034+ checkConfirmDialog (tester, unreadCount);
1035+ });
1036+
1037+ testWidgets ('DmNarrow: do not show dialog' , (tester) async {
1038+ final selfUser = eg.selfUser;
1039+ final otherUser = eg.otherUser;
1040+ final message = eg.dmMessage (flags: [], from: selfUser, to: [otherUser]);
1041+ final unreadMsgs = eg.unreadMsgs (dms: [
1042+ UnreadDmSnapshot (otherUserId: otherUser.userId, unreadMessageIds: [message.id])
1043+ ]);
1044+ final narrow = DmNarrow .ofMessage (message, selfUserId: eg.selfUser.userId);
1045+ await setupMessageListPage (tester,
1046+ narrow: narrow,
1047+ messages: [message],
1048+ unreadMsgs: unreadMsgs);
1049+ check (isMarkAsReadButtonVisible (tester)).isTrue ();
1050+
1051+ connection.prepare (json: UpdateMessageFlagsForNarrowResult (
1052+ processedCount: 1 , updatedCount: 1 ,
1053+ firstProcessedId: message.id, lastProcessedId: message.id,
1054+ foundOldest: true , foundNewest: true ).toJson ());
1055+ await tester.tap (find.byType (MarkAsReadWidget ));
1056+ await tester.pump ();
1057+
1058+ checkNoDialog (tester);
1059+ await tester.pump (Duration .zero);
1060+ });
1061+
1062+ testWidgets ('TopicNarrow: do not show dialog' , (tester) async {
1063+ final message = eg.streamMessage (flags: []);
1064+ final unreadMsgs = eg.unreadMsgs (channels: [
1065+ UnreadChannelSnapshot (topic: message.topic,
1066+ streamId: message.streamId, unreadMessageIds: [message.id])
1067+ ]);
1068+ final narrow = TopicNarrow .ofMessage (message);
1069+ await setupMessageListPage (tester,
1070+ narrow: narrow,
1071+ messages: [message],
1072+ unreadMsgs: unreadMsgs);
1073+ check (isMarkAsReadButtonVisible (tester)).isTrue ();
1074+
1075+ connection.prepare (json: UpdateMessageFlagsForNarrowResult (
1076+ processedCount: 1 , updatedCount: 1 ,
1077+ firstProcessedId: message.id, lastProcessedId: message.id,
1078+ foundOldest: true , foundNewest: true ).toJson ());
1079+ await tester.tap (find.byType (MarkAsReadWidget ));
1080+ await tester.pump ();
1081+
1082+ checkNoDialog (tester);
1083+ await tester.pump (Duration .zero);
1084+ });
1085+ });
1086+
9851087 testWidgets ('from read to unread' , (tester) async {
9861088 final message = eg.streamMessage (flags: [MessageFlag .read]);
9871089 await setupMessageListPage (tester, messages: [message]);
0 commit comments