@@ -17,6 +17,7 @@ import 'package:zulip/widgets/login.dart';
17
17
import 'package:zulip/widgets/page.dart' ;
18
18
19
19
import '../api/fake_api.dart' ;
20
+ import '../api/route/route_checks.dart' ;
20
21
import '../example_data.dart' as eg;
21
22
import '../model/binding.dart' ;
22
23
import '../stdlib_checks.dart' ;
@@ -65,7 +66,61 @@ void main() {
65
66
expectErrorFromText (
'[email protected] ' ,
ServerUrlValidationError .noUseEmail);
66
67
});
67
68
68
- // TODO test AddAccountPage
69
+ group ('AddAccountPage' , () {
70
+ late FakeApiConnection connection;
71
+ List <Route <dynamic >> pushedRoutes = [];
72
+ List <Route <dynamic >> poppedRoutes = [];
73
+
74
+ List <Route <dynamic >> takePushedRoutes () {
75
+ final routes = pushedRoutes.toList ();
76
+ pushedRoutes.clear ();
77
+ return routes;
78
+ }
79
+
80
+ Future <void > prepare (WidgetTester tester) async {
81
+ addTearDown (testBinding.reset);
82
+
83
+ pushedRoutes = [];
84
+ poppedRoutes = [];
85
+ final testNavObserver = TestNavigatorObserver ();
86
+ testNavObserver.onPushed = (route, prevRoute) => pushedRoutes.add (route);
87
+ testNavObserver.onPopped = (route, prevRoute) => poppedRoutes.add (route);
88
+ testNavObserver.onReplaced = (route, prevRoute) {
89
+ poppedRoutes.add (prevRoute! );
90
+ pushedRoutes.add (route! );
91
+ };
92
+
93
+ await tester.pumpWidget (ZulipApp (navigatorObservers: [testNavObserver]));
94
+ await tester.pump ();
95
+ check (takePushedRoutes ()).single.isA <WidgetRoute >().page.isA <ChooseAccountPage >();
96
+ await tester.tap (find.text ('Add an account' ));
97
+ check (takePushedRoutes ()).single.isA <WidgetRoute >().page.isA <AddAccountPage >();
98
+ await testNavObserver.pumpPastTransition (tester);
99
+ }
100
+
101
+ Future <void > attempt (WidgetTester tester,
102
+ Uri realmUrl, Map <String , Object ?> responseJson) async {
103
+ await tester.enterText (find.byType (TextField ), realmUrl.toString ());
104
+ testBinding.globalStore.useCachedApiConnections = true ;
105
+ connection = testBinding.globalStore.apiConnection (
106
+ realmUrl: realmUrl,
107
+ zulipFeatureLevel: null );
108
+ connection.prepare (json: responseJson);
109
+ await tester.tap (find.text ('Continue' ));
110
+ await tester.pump (Duration .zero);
111
+ }
112
+
113
+ testWidgets ('happy path' , (tester) async {
114
+ await prepare (tester);
115
+
116
+ final serverSettings = eg.serverSettings ();
117
+
118
+ await attempt (tester, serverSettings.realmUrl, serverSettings.toJson ());
119
+ checkNoDialog (tester);
120
+ check (takePushedRoutes ()).single.isA <WidgetRoute >().page.isA <LoginPage >()
121
+ .serverSettings.realmUrl.equals (serverSettings.realmUrl);
122
+ });
123
+ });
69
124
70
125
group ('LoginPage' , () {
71
126
late FakeApiConnection connection;
0 commit comments