@@ -923,6 +923,54 @@ void main() {
923
923
await tester.pump ();
924
924
tester.widget (find.text ('new stream name' ));
925
925
});
926
+
927
+ testWidgets ('navigates to TopicNarrow on tapping topic in ChannelNarrow' , (tester) async {
928
+ final pushedRoutes = < Route <void >> [];
929
+ final navObserver = TestNavigatorObserver ()
930
+ ..onPushed = (route, prevRoute) => pushedRoutes.add (route);
931
+ final channel = eg.stream ();
932
+ final message = eg.streamMessage (stream: channel, topic: 'topic name' );
933
+ await setupMessageListPage (tester,
934
+ narrow: ChannelNarrow (channel.streamId),
935
+ streams: [channel],
936
+ messages: [message],
937
+ navObservers: [navObserver]);
938
+
939
+ assert (pushedRoutes.length == 1 );
940
+ pushedRoutes.clear ();
941
+
942
+ connection.prepare (json: eg.newestGetMessagesResult (
943
+ foundOldest: true , messages: [message]).toJson ());
944
+ await tester.tap (find.descendant (
945
+ of: find.byType (StreamMessageRecipientHeader ),
946
+ matching: find.text ('topic name' )));
947
+ await tester.pump ();
948
+ check (pushedRoutes).single.isA <WidgetRoute >().page.isA <MessageListPage >()
949
+ .initNarrow.equals (TopicNarrow .ofMessage (message));
950
+ await tester.pumpAndSettle ();
951
+ });
952
+
953
+ testWidgets ('does not navigate on tapping topic in TopicNarrow' , (tester) async {
954
+ final pushedRoutes = < Route <void >> [];
955
+ final navObserver = TestNavigatorObserver ()
956
+ ..onPushed = (route, prevRoute) => pushedRoutes.add (route);
957
+ final channel = eg.stream ();
958
+ final message = eg.streamMessage (stream: channel, topic: 'topic name' );
959
+ await setupMessageListPage (tester,
960
+ narrow: TopicNarrow .ofMessage (message),
961
+ streams: [channel],
962
+ messages: [message],
963
+ navObservers: [navObserver]);
964
+
965
+ assert (pushedRoutes.length == 1 );
966
+ pushedRoutes.clear ();
967
+
968
+ await tester.tap (find.descendant (
969
+ of: find.byType (StreamMessageRecipientHeader ),
970
+ matching: find.text ('topic name' )));
971
+ await tester.pump ();
972
+ check (pushedRoutes).isEmpty ();
973
+ });
926
974
});
927
975
928
976
group ('DmRecipientHeader' , () {
@@ -988,6 +1036,46 @@ void main() {
988
1036
tester.widget (find.textContaining (RegExp ("Dec 1[89], 2022" )));
989
1037
tester.widget (find.textContaining (RegExp ("Aug 2[23], 2022" )));
990
1038
});
1039
+
1040
+ testWidgets ('navigates to DmNarrow on tapping recipient header in CombinedFeedNarrow' , (tester) async {
1041
+ final pushedRoutes = < Route <void >> [];
1042
+ final navObserver = TestNavigatorObserver ()
1043
+ ..onPushed = (route, prevRoute) => pushedRoutes.add (route);
1044
+ final dmMessage = eg.dmMessage (from: eg.selfUser, to: [eg.otherUser]);
1045
+ await setupMessageListPage (tester,
1046
+ narrow: const CombinedFeedNarrow (),
1047
+ messages: [dmMessage],
1048
+ navObservers: [navObserver]);
1049
+
1050
+ assert (pushedRoutes.length == 1 );
1051
+ pushedRoutes.clear ();
1052
+
1053
+ connection.prepare (json: eg.newestGetMessagesResult (
1054
+ foundOldest: true , messages: [dmMessage]).toJson ());
1055
+ await tester.tap (find.byType (DmRecipientHeader ));
1056
+ await tester.pump ();
1057
+ check (pushedRoutes).single.isA <WidgetRoute >().page.isA <MessageListPage >()
1058
+ .initNarrow.equals (DmNarrow .withUser (eg.otherUser.userId, selfUserId: eg.selfUser.userId));
1059
+ await tester.pumpAndSettle ();
1060
+ });
1061
+
1062
+ testWidgets ('does not navigate on tapping recipient header in DmNarrow' , (tester) async {
1063
+ final pushedRoutes = < Route <void >> [];
1064
+ final navObserver = TestNavigatorObserver ()
1065
+ ..onPushed = (route, prevRoute) => pushedRoutes.add (route);
1066
+ final dmMessage = eg.dmMessage (from: eg.selfUser, to: [eg.otherUser]);
1067
+ await setupMessageListPage (tester,
1068
+ narrow: DmNarrow .withUser (eg.otherUser.userId, selfUserId: eg.selfUser.userId),
1069
+ messages: [dmMessage],
1070
+ navObservers: [navObserver]);
1071
+
1072
+ assert (pushedRoutes.length == 1 );
1073
+ pushedRoutes.clear ();
1074
+
1075
+ await tester.tap (find.byType (DmRecipientHeader ));
1076
+ await tester.pump ();
1077
+ check (pushedRoutes).isEmpty ();
1078
+ });
991
1079
});
992
1080
993
1081
group ('formatHeaderDate' , () {
0 commit comments