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