@@ -6,7 +6,6 @@ import 'package:flutter/foundation.dart';
66import 'package:flutter/material.dart' ;
77import 'package:flutter_test/flutter_test.dart' ;
88import 'package:go_router/go_router.dart' ;
9- import 'package:go_router/src/inherited_go_router.dart' ;
109
1110void main () {
1211 group ('updateShouldNotify' , () {
@@ -71,6 +70,15 @@ void main() {
7170 expect (properties.properties.first, isA <DiagnosticsProperty <GoRouter >>());
7271 expect (properties.properties.first.value, goRouter);
7372 });
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+ });
7482}
7583
7684bool setupInheritedGoRouterChange ({
@@ -103,3 +111,28 @@ class Page2 extends StatelessWidget {
103111 @override
104112 Widget build (BuildContext context) => Container ();
105113}
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