@@ -927,6 +927,54 @@ void main() {
927927        await  tester.pump ();
928928        tester.widget (find.text ('new stream name' ));
929929      });
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+       });
930978    });
931979
932980    group ('DmRecipientHeader' , () {
@@ -992,6 +1040,46 @@ void main() {
9921040      tester.widget (find.textContaining (RegExp ("Dec 1[89], 2022" )));
9931041      tester.widget (find.textContaining (RegExp ("Aug 2[23], 2022" )));
9941042    });
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+     });
9951083  });
9961084
9971085  group ('formatHeaderDate' , () {
0 commit comments