@@ -3,12 +3,14 @@ import 'package:flutter/material.dart';
33import 'package:flutter_checks/flutter_checks.dart' ;
44import 'package:flutter_test/flutter_test.dart' ;
55import 'package:zulip/api/model/events.dart' ;
6+ import 'package:zulip/model/narrow.dart' ;
67import 'package:zulip/model/store.dart' ;
78import 'package:zulip/widgets/app.dart' ;
89import 'package:zulip/widgets/app_bar.dart' ;
910import 'package:zulip/widgets/home.dart' ;
1011import 'package:zulip/widgets/icons.dart' ;
1112import 'package:zulip/widgets/inbox.dart' ;
13+ import 'package:zulip/widgets/message_list.dart' ;
1214import 'package:zulip/widgets/page.dart' ;
1315import 'package:zulip/widgets/profile.dart' ;
1416import 'package:zulip/widgets/subscription_list.dart' ;
@@ -19,22 +21,29 @@ import '../example_data.dart' as eg;
1921import '../flutter_checks.dart' ;
2022import '../model/binding.dart' ;
2123import '../model/test_store.dart' ;
24+ import '../test_navigation.dart' ;
25+ import 'message_list_checks.dart' ;
2226import 'page_checks.dart' ;
2327import 'test_app.dart' ;
2428
2529void main () {
2630 TestZulipBinding .ensureInitialized ();
2731
2832 late PerAccountStore store;
33+ late FakeApiConnection connection;
2934
30- Future <void > prepare (WidgetTester tester) async {
35+ Future <void > prepare (WidgetTester tester, {
36+ NavigatorObserver ? navigatorObserver,
37+ }) async {
3138 addTearDown (testBinding.reset);
3239 await testBinding.globalStore.add (eg.selfAccount, eg.initialSnapshot ());
3340 store = await testBinding.globalStore.perAccount (eg.selfAccount.id);
41+ connection = store.connection as FakeApiConnection ;
3442 await store.addUser (eg.selfUser);
3543
3644 await tester.pumpWidget (TestZulipApp (
3745 accountId: eg.selfAccount.id,
46+ navigatorObservers: navigatorObserver != null ? [navigatorObserver] : [],
3847 child: const HomePage ()));
3948 await tester.pump ();
4049 }
@@ -88,6 +97,23 @@ void main () {
8897 of: find.byType (ZulipAppBar ),
8998 matching: find.text ('Direct messages' ))).findsOne ();
9099 });
100+
101+ testWidgets ('combined feed' , (tester) async {
102+ final pushedRoutes = < Route <dynamic >> [];
103+ final testNavObserver = TestNavigatorObserver ()
104+ ..onPushed = (route, prevRoute) => pushedRoutes.add (route);
105+ await prepare (tester, navigatorObserver: testNavObserver);
106+ pushedRoutes.clear ();
107+
108+ connection.prepare (json: eg.newestGetMessagesResult (
109+ foundOldest: true , messages: []).toJson ());
110+ await tester.tap (find.byIcon (ZulipIcons .message_feed));
111+ await tester.pump ();
112+ await tester.pump (const Duration (milliseconds: 250 ));
113+ check (pushedRoutes).single.isA <WidgetRoute >().page
114+ .isA <MessageListPage >()
115+ .initNarrow.equals (const CombinedFeedNarrow ());
116+ });
91117 });
92118
93119 group ('menu' , () {
0 commit comments