@@ -922,6 +922,72 @@ void main() {
922
922
await tester.pump ();
923
923
tester.widget (find.text ('new stream name' ));
924
924
});
925
+
926
+ testWidgets ('navigates to TopicNarrow on tapping topic in CombinedFeedNarrow' , (tester) async {
927
+ final pushedRoutes = < Route <void >> [];
928
+ final navObserver = TestNavigatorObserver ()
929
+ ..onPushed = (route, prevRoute) => pushedRoutes.add (route);
930
+
931
+ final channel = eg.stream ();
932
+ final message = eg.streamMessage (stream: channel, topic: 'topic name' );
933
+
934
+ await setupMessageListPage (
935
+ tester,
936
+ narrow: const CombinedFeedNarrow (),
937
+ messages: [message],
938
+ subscriptions: [eg.subscription (channel)],
939
+ navObservers: [navObserver],
940
+ );
941
+
942
+ assert (pushedRoutes.length == 1 );
943
+ pushedRoutes.clear ();
944
+
945
+ connection.prepare (json: eg.newestGetMessagesResult (
946
+ messages: [message],
947
+ foundOldest: true ,
948
+ ).toJson ());
949
+
950
+ final topicFinder = find.descendant (
951
+ of: find.byType (StreamMessageRecipientHeader ),
952
+ matching: find.text ('topic name' ),
953
+ );
954
+ await tester.tap (topicFinder);
955
+ await tester.pumpAndSettle ();
956
+
957
+ check (pushedRoutes).single
958
+ .isA <WidgetRoute >()
959
+ .page.isA <MessageListPage >()
960
+ .initNarrow.equals (TopicNarrow (channel.streamId, 'topic name' ));
961
+ });
962
+
963
+ testWidgets ('does not navigate on tapping topic in TopicNarrow' , (tester) async {
964
+ final pushedRoutes = < Route <void >> [];
965
+ final navObserver = TestNavigatorObserver ()
966
+ ..onPushed = (route, prevRoute) => pushedRoutes.add (route);
967
+
968
+ final channel = eg.stream ();
969
+ final message = eg.streamMessage (stream: channel, topic: 'topic name' );
970
+
971
+ await setupMessageListPage (
972
+ tester,
973
+ narrow: TopicNarrow (channel.streamId, 'topic name' ),
974
+ navObservers: [navObserver],
975
+ streams: [channel],
976
+ messages: [message],
977
+ );
978
+
979
+ assert (pushedRoutes.length == 1 );
980
+ pushedRoutes.clear ();
981
+
982
+ final topicFinder = find.descendant (
983
+ of: find.byType (StreamMessageRecipientHeader ),
984
+ matching: find.text ('topic name' ),
985
+ );
986
+ await tester.tap (topicFinder);
987
+ await tester.pumpAndSettle ();
988
+
989
+ check (pushedRoutes).isEmpty ();
990
+ });
925
991
});
926
992
927
993
group ('DmRecipientHeader' , () {
@@ -987,6 +1053,62 @@ void main() {
987
1053
tester.widget (find.textContaining (RegExp ("Dec 1[89], 2022" )));
988
1054
tester.widget (find.textContaining (RegExp ("Aug 2[23], 2022" )));
989
1055
});
1056
+
1057
+ testWidgets ('navigates to DmNarrow on tapping recipient header in CombinedFeedNarrow' , (tester) async {
1058
+ final pushedRoutes = < Route <void >> [];
1059
+ final navObserver = TestNavigatorObserver ()
1060
+ ..onPushed = (route, prevRoute) => pushedRoutes.add (route);
1061
+
1062
+ final dmMessage = eg.dmMessage (from: eg.selfUser, to: [eg.otherUser]);
1063
+
1064
+ await setupMessageListPage (
1065
+ tester,
1066
+ narrow: const CombinedFeedNarrow (),
1067
+ messages: [dmMessage],
1068
+ navObservers: [navObserver],
1069
+ );
1070
+
1071
+ assert (pushedRoutes.length == 1 );
1072
+ pushedRoutes.clear ();
1073
+
1074
+ connection.prepare (json: eg.newestGetMessagesResult (
1075
+ messages: [dmMessage],
1076
+ foundOldest: true ,
1077
+ ).toJson ());
1078
+
1079
+ final recipientHeaderFinder = find.byType (DmRecipientHeader );
1080
+ await tester.tap (recipientHeaderFinder);
1081
+ await tester.pumpAndSettle ();
1082
+
1083
+ check (pushedRoutes).single
1084
+ .isA <WidgetRoute >()
1085
+ .page.isA <MessageListPage >()
1086
+ .initNarrow.equals (DmNarrow .withUser (eg.otherUser.userId, selfUserId: eg.selfUser.userId));
1087
+ });
1088
+
1089
+ testWidgets ('does not navigate on tapping recipient header in DmNarrow' , (tester) async {
1090
+ final pushedRoutes = < Route <void >> [];
1091
+ final navObserver = TestNavigatorObserver ()
1092
+ ..onPushed = (route, prevRoute) => pushedRoutes.add (route);
1093
+
1094
+ final dmMessage = eg.dmMessage (from: eg.selfUser, to: [eg.otherUser]);
1095
+
1096
+ await setupMessageListPage (
1097
+ tester,
1098
+ narrow: DmNarrow .withUser (eg.otherUser.userId, selfUserId: eg.selfUser.userId),
1099
+ navObservers: [navObserver],
1100
+ messages: [dmMessage],
1101
+ );
1102
+
1103
+ assert (pushedRoutes.length == 1 );
1104
+ pushedRoutes.clear ();
1105
+
1106
+ final recipientHeaderFinder = find.byType (DmRecipientHeader );
1107
+ await tester.tap (recipientHeaderFinder);
1108
+ await tester.pumpAndSettle ();
1109
+
1110
+ check (pushedRoutes).isEmpty ();
1111
+ });
990
1112
});
991
1113
992
1114
group ('formatHeaderDate' , () {
0 commit comments