@@ -6,7 +6,6 @@ import 'package:flutter/foundation.dart';
6
6
import 'package:flutter/material.dart' ;
7
7
import 'package:flutter_test/flutter_test.dart' ;
8
8
import 'package:go_router/go_router.dart' ;
9
- import 'package:go_router/src/inherited_go_router.dart' ;
10
9
11
10
void main () {
12
11
group ('updateShouldNotify' , () {
@@ -71,6 +70,15 @@ void main() {
71
70
expect (properties.properties.first, isA <DiagnosticsProperty <GoRouter >>());
72
71
expect (properties.properties.first.value, goRouter);
73
72
});
73
+
74
+ testWidgets ('mediates Widget\' s access to GoRouter.' ,
75
+ (WidgetTester tester) async {
76
+ final MockGoRouter router = MockGoRouter ();
77
+ await tester.pumpWidget (MaterialApp (
78
+ home: InheritedGoRouter (goRouter: router, child: const _MyWidget ())));
79
+ await tester.tap (find.text ('My Page' ));
80
+ expect (router.latestPushedName, 'my_page' );
81
+ });
74
82
}
75
83
76
84
bool setupInheritedGoRouterChange ({
@@ -103,3 +111,28 @@ class Page2 extends StatelessWidget {
103
111
@override
104
112
Widget build (BuildContext context) => Container ();
105
113
}
114
+
115
+ class _MyWidget extends StatelessWidget {
116
+ const _MyWidget ({Key ? key}) : super (key: key);
117
+
118
+ @override
119
+ Widget build (BuildContext context) {
120
+ return ElevatedButton (
121
+ onPressed: () => context.pushNamed ('my_page' ),
122
+ child: const Text ('My Page' ));
123
+ }
124
+ }
125
+
126
+ class MockGoRouter extends GoRouter {
127
+ MockGoRouter () : super (routes: < GoRoute > []);
128
+
129
+ late String latestPushedName;
130
+
131
+ @override
132
+ void pushNamed (String name,
133
+ {Map <String , String > params = const < String , String > {},
134
+ Map <String , String > queryParams = const < String , String > {},
135
+ Object ? extra}) {
136
+ latestPushedName = name;
137
+ }
138
+ }
0 commit comments