@@ -923,6 +923,54 @@ void main() {
923923        await  tester.pump ();
924924        tester.widget (find.text ('new stream name' ));
925925      });
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+       });
926974    });
927975
928976    group ('DmRecipientHeader' , () {
@@ -988,6 +1036,46 @@ void main() {
9881036      tester.widget (find.textContaining (RegExp ("Dec 1[89], 2022" )));
9891037      tester.widget (find.textContaining (RegExp ("Aug 2[23], 2022" )));
9901038    });
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+     });
9911079  });
9921080
9931081  group ('formatHeaderDate' , () {
0 commit comments