diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 0e75909..88937e7 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -22,7 +22,7 @@ jobs: flutter-version: # The version of Flutter to use should use the minimum Dart SDK version supported by the package, # refer to https://docs.flutter.dev/development/tools/sdk/releases. - - "3.24.0" + - "3.29.0" - "3.x" uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1 with: diff --git a/example/lib/ui/home_screen.dart b/example/lib/ui/home_screen.dart index 96b14b2..a6b9d66 100644 --- a/example/lib/ui/home_screen.dart +++ b/example/lib/ui/home_screen.dart @@ -70,9 +70,7 @@ class _HomeScreenState extends State { final monospaceFontFamily = Platform.isIOS ? 'Courier' : 'monospace'; return Scaffold( - appBar: AppBar( - title: const Text('Mockingjay Example'), - ), + appBar: AppBar(title: const Text('Mockingjay Example')), body: Center( child: DefaultTextStyle.merge( textAlign: TextAlign.center, @@ -91,7 +89,8 @@ class _HomeScreenState extends State { TextSpan( children: [ const TextSpan( - text: 'Use one of the following buttons to trigger a ' + text: + 'Use one of the following buttons to trigger a ' 'navigation change.\n' 'Check out the test files in the ', ), diff --git a/example/lib/ui/pincode_screen.dart b/example/lib/ui/pincode_screen.dart index ab14921..5d74661 100644 --- a/example/lib/ui/pincode_screen.dart +++ b/example/lib/ui/pincode_screen.dart @@ -51,9 +51,7 @@ class _PincodeScreenState extends State { final monospaceFontFamily = Platform.isIOS ? 'Courier' : 'monospace'; return Scaffold( - appBar: AppBar( - title: const Text('Pincode Screen'), - ), + appBar: AppBar(title: const Text('Pincode Screen')), body: Center( child: DefaultTextStyle.merge( textAlign: TextAlign.center, diff --git a/example/lib/ui/quiz_dialog.dart b/example/lib/ui/quiz_dialog.dart index c6f3020..ee7c485 100644 --- a/example/lib/ui/quiz_dialog.dart +++ b/example/lib/ui/quiz_dialog.dart @@ -1,9 +1,6 @@ import 'package:flutter/cupertino.dart'; -enum QuizOption { - pizza, - hamburger, -} +enum QuizOption { pizza, hamburger } class QuizDialog extends StatelessWidget { const QuizDialog({super.key}); diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 31fba2a..f60fa9d 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -4,18 +4,18 @@ version: 0.0.1 homepage: https://github.com/VeryGoodOpenSource/mockingjay environment: - sdk: ^3.5.0 + sdk: ^3.7.0 dependencies: - bloc: ^8.1.4 + bloc: ^9.0.0 equatable: ^2.0.5 flutter: sdk: flutter - flutter_bloc: ^8.1.6 + flutter_bloc: ^9.1.0 universal_io: ^2.2.2 dev_dependencies: - bloc_test: ^9.1.7 + bloc_test: ^10.0.0 flutter_test: sdk: flutter mockingjay: diff --git a/example/test/helpers.dart b/example/test/helpers.dart index 7f4a204..f496624 100644 --- a/example/test/helpers.dart +++ b/example/test/helpers.dart @@ -2,17 +2,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; extension WidgetTesterX on WidgetTester { - Future pumpTest({ - required WidgetBuilder builder, - }) async { + Future pumpTest({required WidgetBuilder builder}) async { await pumpWidget( MaterialApp( title: 'Mock Navigator Test', - home: Scaffold( - body: Builder( - builder: builder, - ), - ), + home: Scaffold(body: Builder(builder: builder)), ), ); } diff --git a/example/test/ui/home_screen_test.dart b/example/test/ui/home_screen_test.dart index a42617c..6812148 100644 --- a/example/test/ui/home_screen_test.dart +++ b/example/test/ui/home_screen_test.dart @@ -10,10 +10,12 @@ class FakeRoute extends Fake implements Route {} void main() { group('HomeScreen', () { - const showPincodeScreenTextButtonKey = - Key('homeScreen_showPincodeScreen_textButton'); - const showQuizDialogTextButtonKey = - Key('homeScreen_showQuizDialog_textButton'); + const showPincodeScreenTextButtonKey = Key( + 'homeScreen_showPincodeScreen_textButton', + ); + const showQuizDialogTextButtonKey = Key( + 'homeScreen_showQuizDialog_textButton', + ); late MockNavigator navigator; @@ -39,10 +41,7 @@ void main() { }, ); - expect( - find.byKey(showPincodeScreenTextButtonKey), - findsOneWidget, - ); + expect(find.byKey(showPincodeScreenTextButtonKey), findsOneWidget); }); testWidgets('navigates to PincodeScreen when pressed', (tester) async { @@ -55,9 +54,7 @@ void main() { }, ); - await tester.tap( - find.byKey(showPincodeScreenTextButtonKey), - ); + await tester.tap(find.byKey(showPincodeScreenTextButtonKey)); verify( () => navigator.push( @@ -91,37 +88,32 @@ void main() { ); }); - testWidgets( - 'displays snackbar when no pincode was submitted', - (tester) async { - when( - () => navigator.push( - any( - that: isRoute( - whereName: equals('/pincode_screen'), - ), - ), - ), - ).thenAnswer((_) async => null); - - await tester.pumpTest( - builder: (context) { - return MockNavigatorProvider( - navigator: navigator, - child: const HomeScreen(), - ); - }, - ); - - await tester.tap(find.byKey(showPincodeScreenTextButtonKey)); - await tester.pumpAndSettle(); - - expect( - find.widgetWithText(SnackBar, 'No pincode submitted. 😲'), - findsOneWidget, - ); - }, - ); + testWidgets('displays snackbar when no pincode was submitted', ( + tester, + ) async { + when( + () => navigator.push( + any(that: isRoute(whereName: equals('/pincode_screen'))), + ), + ).thenAnswer((_) async => null); + + await tester.pumpTest( + builder: (context) { + return MockNavigatorProvider( + navigator: navigator, + child: const HomeScreen(), + ); + }, + ); + + await tester.tap(find.byKey(showPincodeScreenTextButtonKey)); + await tester.pumpAndSettle(); + + expect( + find.widgetWithText(SnackBar, 'No pincode submitted. 😲'), + findsOneWidget, + ); + }); }); group('show quiz dialog button', () { @@ -132,10 +124,7 @@ void main() { }, ); - expect( - find.byKey(showQuizDialogTextButtonKey), - findsOneWidget, - ); + expect(find.byKey(showQuizDialogTextButtonKey), findsOneWidget); }); testWidgets('shows quiz dialog when pressed', (tester) async { @@ -155,83 +144,78 @@ void main() { ).called(1); }); - testWidgets( - 'displays snackbar when pizza was selected', - (tester) async { - when( - () => navigator.push(any(that: isRoute())), - ).thenAnswer((_) async => QuizOption.pizza); - - await tester.pumpTest( - builder: (context) { - return MockNavigatorProvider( - navigator: navigator, - child: const HomeScreen(), - ); - }, - ); - - await tester.tap(find.byKey(showQuizDialogTextButtonKey)); - await tester.pumpAndSettle(); - - expect( - find.widgetWithText(SnackBar, 'Pizza all the way! 🍕'), - findsOneWidget, - ); - }, - ); - - testWidgets( - 'displays snackbar when hamburger was selected', - (tester) async { - when( - () => navigator.push(any(that: isRoute())), - ).thenAnswer((_) async => QuizOption.hamburger); - - await tester.pumpTest( - builder: (context) { - return MockNavigatorProvider( - navigator: navigator, - child: const HomeScreen(), - ); - }, - ); - - await tester.tap(find.byKey(showQuizDialogTextButtonKey)); - await tester.pumpAndSettle(); - - expect( - find.widgetWithText(SnackBar, 'Hamburger all the way! 🍔'), - findsOneWidget, - ); - }, - ); - - testWidgets( - 'displays snackbar when no answer was selected', - (tester) async { - when( - () => navigator.push(any(that: isRoute())), - ).thenAnswer((_) async => null); - - await tester.pumpTest( - builder: (context) { - return MockNavigatorProvider( - navigator: navigator, - child: const HomeScreen(), - ); - }, - ); - - await tester.tap(find.byKey(showQuizDialogTextButtonKey)); - await tester.pumpAndSettle(); - - expect( - find.widgetWithText(SnackBar, 'No answer selected. 😲'), - findsOneWidget, - ); - }, - ); + testWidgets('displays snackbar when pizza was selected', (tester) async { + when( + () => navigator.push(any(that: isRoute())), + ).thenAnswer((_) async => QuizOption.pizza); + + await tester.pumpTest( + builder: (context) { + return MockNavigatorProvider( + navigator: navigator, + child: const HomeScreen(), + ); + }, + ); + + await tester.tap(find.byKey(showQuizDialogTextButtonKey)); + await tester.pumpAndSettle(); + + expect( + find.widgetWithText(SnackBar, 'Pizza all the way! 🍕'), + findsOneWidget, + ); + }); + + testWidgets('displays snackbar when hamburger was selected', ( + tester, + ) async { + when( + () => navigator.push(any(that: isRoute())), + ).thenAnswer((_) async => QuizOption.hamburger); + + await tester.pumpTest( + builder: (context) { + return MockNavigatorProvider( + navigator: navigator, + child: const HomeScreen(), + ); + }, + ); + + await tester.tap(find.byKey(showQuizDialogTextButtonKey)); + await tester.pumpAndSettle(); + + expect( + find.widgetWithText(SnackBar, 'Hamburger all the way! 🍔'), + findsOneWidget, + ); + }); + + testWidgets('displays snackbar when no answer was selected', ( + tester, + ) async { + when( + () => navigator.push(any(that: isRoute())), + ).thenAnswer((_) async => null); + + await tester.pumpTest( + builder: (context) { + return MockNavigatorProvider( + navigator: navigator, + child: const HomeScreen(), + ); + }, + ); + + await tester.tap(find.byKey(showQuizDialogTextButtonKey)); + await tester.pumpAndSettle(); + + expect( + find.widgetWithText(SnackBar, 'No answer selected. 😲'), + findsOneWidget, + ); + }); }); }); } diff --git a/example/test/ui/pincode_screen_test.dart b/example/test/ui/pincode_screen_test.dart index 80a8442..a4406c0 100644 --- a/example/test/ui/pincode_screen_test.dart +++ b/example/test/ui/pincode_screen_test.dart @@ -63,22 +63,21 @@ void main() { }, ); - testWidgets( - 'clamps to 6 digits when exact 6 digits have been entered', - (tester) async { - await tester.pumpTest( - builder: (context) { - return MockNavigatorProvider( - navigator: navigator, - child: const PincodeScreen(), - ); - }, - ); + testWidgets('clamps to 6 digits when exact 6 digits have been entered', ( + tester, + ) async { + await tester.pumpTest( + builder: (context) { + return MockNavigatorProvider( + navigator: navigator, + child: const PincodeScreen(), + ); + }, + ); - await tester.enterText(find.byType(TextField), '123456'); - verify(() => navigator.pop('123456')).called(1); - }, - ); + await tester.enterText(find.byType(TextField), '123456'); + verify(() => navigator.pop('123456')).called(1); + }); testWidgets( 'clamps to 6 digits when more than 6 digits have been entered', @@ -97,23 +96,22 @@ void main() { }, ); - testWidgets( - 'shows error when less than 6 digits have been entered', - (tester) async { - await tester.pumpTest( - builder: (context) { - return MockNavigatorProvider( - navigator: navigator, - child: const PincodeScreen(), - ); - }, - ); + testWidgets('shows error when less than 6 digits have been entered', ( + tester, + ) async { + await tester.pumpTest( + builder: (context) { + return MockNavigatorProvider( + navigator: navigator, + child: const PincodeScreen(), + ); + }, + ); - await tester.enterText(find.byType(TextField), '12345'); - await tester.testTextInput.receiveAction(TextInputAction.done); - await tester.pump(); - expect(find.text('Pincode must be 6 digits long'), findsOneWidget); - }, - ); + await tester.enterText(find.byType(TextField), '12345'); + await tester.testTextInput.receiveAction(TextInputAction.done); + await tester.pump(); + expect(find.text('Pincode must be 6 digits long'), findsOneWidget); + }); }); } diff --git a/example/test/ui/quiz_dialog_test.dart b/example/test/ui/quiz_dialog_test.dart index 2e9a731..f673346 100644 --- a/example/test/ui/quiz_dialog_test.dart +++ b/example/test/ui/quiz_dialog_test.dart @@ -41,23 +41,20 @@ void main() { expect(find.text('🍕'), findsOneWidget); }); - testWidgets( - 'pops route with pizza option when pressed', - (tester) async { - await tester.pumpTest( - builder: (context) { - return MockNavigatorProvider( - navigator: navigator, - child: const QuizDialog(), - ); - }, - ); - - await tester.tap(find.text('🍕')); - - verify(() => navigator.pop(QuizOption.pizza)).called(1); - }, - ); + testWidgets('pops route with pizza option when pressed', (tester) async { + await tester.pumpTest( + builder: (context) { + return MockNavigatorProvider( + navigator: navigator, + child: const QuizDialog(), + ); + }, + ); + + await tester.tap(find.text('🍕')); + + verify(() => navigator.pop(QuizOption.pizza)).called(1); + }); }); group('hamburger button', () { @@ -71,23 +68,22 @@ void main() { expect(find.text('🍔'), findsOneWidget); }); - testWidgets( - 'pops route with hamburger option when pressed', - (tester) async { - await tester.pumpTest( - builder: (context) { - return MockNavigatorProvider( - navigator: navigator, - child: const QuizDialog(), - ); - }, - ); - - await tester.tap(find.text('🍔')); - - verify(() => navigator.pop(QuizOption.hamburger)).called(1); - }, - ); + testWidgets('pops route with hamburger option when pressed', ( + tester, + ) async { + await tester.pumpTest( + builder: (context) { + return MockNavigatorProvider( + navigator: navigator, + child: const QuizDialog(), + ); + }, + ); + + await tester.tap(find.text('🍔')); + + verify(() => navigator.pop(QuizOption.hamburger)).called(1); + }); }); }); } diff --git a/lib/src/matchers.dart b/lib/src/matchers.dart index 7f269a8..109e318 100644 --- a/lib/src/matchers.dart +++ b/lib/src/matchers.dart @@ -177,16 +177,20 @@ class _RouteMatcher extends Matcher { if (item is Route) { final typeMatches = !hasTypeArgument || item is Route; - final settingsMatches = !hasSettingsMatcher || + final settingsMatches = + !hasSettingsMatcher || whereSettings!.matches(item.settings, matchState); final nameMatches = !hasNameMatcher || whereName!.matches(item.settings.name, matchState); - final argumentsMatches = !hasArgumentsMatcher || + final argumentsMatches = + !hasArgumentsMatcher || whereArguments!.matches(item.settings.arguments, matchState); - final maintainStateMatches = !hasMaintainStateMatcher || + final maintainStateMatches = + !hasMaintainStateMatcher || (item is ModalRoute && whereMaintainState!.matches(item.maintainState, matchState)); - final fullscreenDialogMatches = !hasFullscreenDialogMatcher || + final fullscreenDialogMatches = + !hasFullscreenDialogMatcher || (item is PageRoute && whereFullscreenDialog!.matches( item.fullscreenDialog, @@ -220,16 +224,20 @@ class _RouteMatcher extends Matcher { final typeMatches = !hasTypeArgument || item is Route; - final settingsMatches = !hasSettingsMatcher || + final settingsMatches = + !hasSettingsMatcher || whereSettings!.matches(item.settings, matchState); final nameMatches = !hasNameMatcher || whereName!.matches(item.settings.name, matchState); - final argumentsMatches = !hasArgumentsMatcher || + final argumentsMatches = + !hasArgumentsMatcher || whereArguments!.matches(item.settings.arguments, matchState); - final maintainStateMatches = !hasMaintainStateMatcher || + final maintainStateMatches = + !hasMaintainStateMatcher || (item is ModalRoute && whereMaintainState!.matches(item.maintainState, matchState)); - final fullscreenDialogMatches = !hasFullscreenDialogMatcher || + final fullscreenDialogMatches = + !hasFullscreenDialogMatcher || (item is PageRoute && whereFullscreenDialog!.matches(item.fullscreenDialog, matchState)); @@ -276,25 +284,27 @@ class _RouteMatcher extends Matcher { mismatchDescriptions.add("the route's `arguments` $mismatch"); } if (!maintainStateMatches) { - final mismatch = item is! ModalRoute - ? 'is not a property on `${item.runtimeType}` and can only be used ' - 'with `ModalRoute`s' - : whereMaintainState!.describeMismatchAsString( - item.maintainState, - matchState, - verbose: verbose, - ); + final mismatch = + item is! ModalRoute + ? 'is not a property on `${item.runtimeType}` and can only be ' + 'used with `ModalRoute`s' + : whereMaintainState!.describeMismatchAsString( + item.maintainState, + matchState, + verbose: verbose, + ); mismatchDescriptions.add('`maintainState` $mismatch'); } if (!fullscreenDialogMatches) { - final mismatch = item is! PageRoute - ? 'is not a property on `${item.runtimeType}` and can only be used ' - 'with `PageRoute`s' - : whereFullscreenDialog!.describeMismatchAsString( - item.fullscreenDialog, - matchState, - verbose: verbose, - ); + final mismatch = + item is! PageRoute + ? 'is not a property on `${item.runtimeType}` and can only be ' + 'used with `PageRoute`s' + : whereFullscreenDialog!.describeMismatchAsString( + item.fullscreenDialog, + matchState, + verbose: verbose, + ); mismatchDescriptions.add('`fullscreenDialog` $mismatch'); } diff --git a/lib/src/mock_navigator.dart b/lib/src/mock_navigator.dart index 36de874..a22bf1d 100644 --- a/lib/src/mock_navigator.dart +++ b/lib/src/mock_navigator.dart @@ -133,10 +133,7 @@ class _MockNavigatorState extends NavigatorState { String routeName, { Object? arguments, }) { - return _navigator.pushNamed( - routeName, - arguments: arguments, - ); + return _navigator.pushNamed(routeName, arguments: arguments); } @override @@ -157,10 +154,7 @@ class _MockNavigatorState extends NavigatorState { Route newRoute, { TO? result, }) { - return _navigator.pushReplacement( - newRoute, - result: result, - ); + return _navigator.pushReplacement(newRoute, result: result); } @override @@ -214,10 +208,7 @@ class _MockNavigatorState extends NavigatorState { Route newRoute, RoutePredicate predicate, ) { - return _navigator.pushAndRemoveUntil( - newRoute, - predicate, - ); + return _navigator.pushAndRemoveUntil(newRoute, predicate); } @override @@ -238,10 +229,7 @@ class _MockNavigatorState extends NavigatorState { RestorableRouteBuilder routeBuilder, { Object? arguments, }) { - return _navigator.restorablePush( - routeBuilder, - arguments: arguments, - ); + return _navigator.restorablePush(routeBuilder, arguments: arguments); } @override @@ -262,10 +250,7 @@ class _MockNavigatorState extends NavigatorState { String routeName, { Object? arguments, }) { - return _navigator.restorablePushNamed( - routeName, - arguments: arguments, - ); + return _navigator.restorablePushNamed(routeName, arguments: arguments); } @override diff --git a/pubspec.yaml b/pubspec.yaml index 49dce7d..09bb1db 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.6.0 homepage: https://github.com/VeryGoodOpenSource/mockingjay environment: - sdk: ^3.5.0 - flutter: ^3.24.0 + sdk: ^3.7.0 + flutter: ^3.29.0 dependencies: flutter: diff --git a/test/src/example_test.dart b/test/src/example_test.dart index dd3b7fb..727494f 100644 --- a/test/src/example_test.dart +++ b/test/src/example_test.dart @@ -51,11 +51,7 @@ void main() { verify( () => navigator.push( - any( - that: isRoute( - whereName: equals('/settings'), - ), - ), + any(that: isRoute(whereName: equals('/settings'))), ), ).called(1); }); diff --git a/test/src/matchers_test.dart b/test/src/matchers_test.dart index e28a367..4c726a7 100644 --- a/test/src/matchers_test.dart +++ b/test/src/matchers_test.dart @@ -45,8 +45,7 @@ void main() { } group('constructor', () { - test( - 'throws AssertionError when both whereSettings ' + test('throws AssertionError when both whereSettings ' 'and whereName or whereArguments matchers are provided', () { expect( () => isRoute( @@ -134,8 +133,7 @@ void main() { ); }); - test( - 'does not match anything that is not a route ' + test('does not match anything that is not a route ' 'with matching settings', () { expectToFail( createRoute(name: '/test'), @@ -220,13 +218,15 @@ is a route where the route's `name` is different. expectToFail( createRoute(arguments: {'a': 1}), isRoute(whereArguments: equals({'a': 2})), - withMessage: "is a route where the route's `arguments` " + withMessage: + "is a route where the route's `arguments` " "at location ['a'] is <1> instead of <2>", ); expectToFail( createRoute(arguments: {'a': 1}), isRoute(whereArguments: equals({'b': 1})), - withMessage: "is a route where the route's `arguments` " + withMessage: + "is a route where the route's `arguments` " "is missing map key 'b'", ); expectToFail( @@ -243,19 +243,20 @@ is a route where the route's `name` is different. expect(createRoute(), isRoute(whereMaintainState: isTrue)); }); - test( - 'does not match anything that is not a route with matching ' + test('does not match anything that is not a route with matching ' 'maintainState argument', () { expectToFail( createRoute(), isRoute(whereMaintainState: isFalse), - withMessage: 'is a route where `maintainState` ' + withMessage: + 'is a route where `maintainState` ' 'is true instead of false', ); expectToFail( NonModalRoute(), isRoute(whereMaintainState: isTrue), - withMessage: 'is a route where `maintainState` ' + withMessage: + 'is a route where `maintainState` ' 'is not a property on `NonModalRoute` and can only be used ' 'with `ModalRoute`s', ); @@ -275,19 +276,20 @@ is a route where the route's `name` is different. ); }); - test( - 'does not match anything that is not a route with matching ' + test('does not match anything that is not a route with matching ' 'fullscreenDialog argument', () { expectToFail( createRoute(fullscreenDialog: true), isRoute(whereFullscreenDialog: isFalse), - withMessage: 'is a route where `fullscreenDialog` ' + withMessage: + 'is a route where `fullscreenDialog` ' 'is true instead of false', ); expectToFail( NonModalRoute(), isRoute(whereFullscreenDialog: isFalse), - withMessage: 'is a route where `fullscreenDialog` ' + withMessage: + 'is a route where `fullscreenDialog` ' 'is not a property on `NonModalRoute` and can only be used ' 'with `PageRoute`s', ); diff --git a/test/src/mock_navigator_test.dart b/test/src/mock_navigator_test.dart index 80610ef..8b849c9 100644 --- a/test/src/mock_navigator_test.dart +++ b/test/src/mock_navigator_test.dart @@ -14,9 +14,7 @@ extension on WidgetTester { home: Scaffold( body: MockNavigatorProvider( navigator: navigator, - child: Builder( - builder: builder, - ), + child: Builder(builder: builder), ), ), ), @@ -30,9 +28,7 @@ void main() { const testRouteName = '__test_route__'; final testRoute = MaterialPageRoute( - settings: const RouteSettings( - name: testRouteName, - ), + settings: const RouteSettings(name: testRouteName), builder: (_) => const Text(testRouteName), ); bool testRoutePredicate(Route _) => false; @@ -49,10 +45,7 @@ void main() { }); test('toString returns normally', () { - expect( - () => navigator.toString(), - returnsNormally, - ); + expect(() => navigator.toString(), returnsNormally); }); testWidgets('mocks .push calls', (tester) async { @@ -60,10 +53,11 @@ void main() { await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context).push(testRoute), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: () => Navigator.of(context).push(testRoute), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); @@ -75,10 +69,11 @@ void main() { await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context).pushNamed(testRouteName), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: () => Navigator.of(context).pushNamed(testRouteName), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); @@ -86,18 +81,20 @@ void main() { }); testWidgets('mocks .pushNamedAndRemoveUntil calls', (tester) async { - when(() => navigator.pushNamedAndRemoveUntil(any(), any())) - .thenAnswer((_) async => null); + when( + () => navigator.pushNamedAndRemoveUntil(any(), any()), + ).thenAnswer((_) async => null); await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context).pushNamedAndRemoveUntil( - testRouteName, - testRoutePredicate, - ), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: + () => Navigator.of( + context, + ).pushNamedAndRemoveUntil(testRouteName, testRoutePredicate), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); @@ -110,15 +107,17 @@ void main() { }); testWidgets('mocks .pushReplacement calls', (tester) async { - when(() => navigator.pushReplacement(any())) - .thenAnswer((_) async {}); + when( + () => navigator.pushReplacement(any()), + ).thenAnswer((_) async {}); await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context).pushReplacement(testRoute), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: () => Navigator.of(context).pushReplacement(testRoute), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); @@ -126,16 +125,19 @@ void main() { }); testWidgets('mocks .pushReplacementNamed calls', (tester) async { - when(() => navigator.pushReplacementNamed(any())) - .thenAnswer((_) async => null); + when( + () => navigator.pushReplacementNamed(any()), + ).thenAnswer((_) async => null); await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => - Navigator.of(context).pushReplacementNamed(testRouteName), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: + () => + Navigator.of(context).pushReplacementNamed(testRouteName), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); @@ -147,10 +149,11 @@ void main() { await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context).pop(testRoute), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: () => Navigator.of(context).pop(testRoute), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); @@ -158,15 +161,18 @@ void main() { }); testWidgets('mocks .popAndPushNamed calls', (tester) async { - when(() => navigator.popAndPushNamed(any())) - .thenAnswer((_) async => null); + when( + () => navigator.popAndPushNamed(any()), + ).thenAnswer((_) async => null); await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context).popAndPushNamed(testRouteName), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: + () => Navigator.of(context).popAndPushNamed(testRouteName), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); @@ -178,10 +184,12 @@ void main() { await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context).popUntil(testRoutePredicate), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: + () => Navigator.of(context).popUntil(testRoutePredicate), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); @@ -193,10 +201,11 @@ void main() { await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context).canPop(), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: () => Navigator.of(context).canPop(), + child: const Text('Trigger'), + ), ); // Called by NavigatorState.didChangeDependencies initially @@ -210,10 +219,11 @@ void main() { await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context).maybePop(), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: () => Navigator.of(context).maybePop(), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); @@ -221,15 +231,17 @@ void main() { }); testWidgets('mocks .maybePop calls w/result', (tester) async { - when(() => navigator.maybePop(any())) - .thenAnswer((_) async => true); + when( + () => navigator.maybePop(any()), + ).thenAnswer((_) async => true); await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context).maybePop(true), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: () => Navigator.of(context).maybePop(true), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); @@ -237,76 +249,90 @@ void main() { }); testWidgets('mocks .pushAndRemoveUntil calls', (tester) async { - when(() => navigator.pushAndRemoveUntil(any(), any())) - .thenAnswer((_) async {}); + when( + () => navigator.pushAndRemoveUntil(any(), any()), + ).thenAnswer((_) async {}); await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context) - .pushAndRemoveUntil(testRoute, testRoutePredicate), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: + () => Navigator.of( + context, + ).pushAndRemoveUntil(testRoute, testRoutePredicate), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); verify( - () => navigator.pushAndRemoveUntil( - testRoute, - testRoutePredicate, - ), + () => navigator.pushAndRemoveUntil(testRoute, testRoutePredicate), ).called(1); }); testWidgets('mocks .restorablePopAndPushNamed calls', (tester) async { - when(() => navigator.restorablePopAndPushNamed(any())) - .thenReturn(testRouteName); + when( + () => navigator.restorablePopAndPushNamed(any()), + ).thenReturn(testRouteName); await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => - Navigator.of(context).restorablePopAndPushNamed(testRouteName), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: + () => Navigator.of( + context, + ).restorablePopAndPushNamed(testRouteName), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); - verify(() => navigator.restorablePopAndPushNamed(testRouteName)) - .called(1); + verify( + () => navigator.restorablePopAndPushNamed(testRouteName), + ).called(1); }); testWidgets('mocks .restorablePush calls', (tester) async { - when(() => navigator.restorablePush(any())) - .thenReturn(testRouteName); + when( + () => navigator.restorablePush(any()), + ).thenReturn(testRouteName); await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => - Navigator.of(context).restorablePush(restorableTestRouteBuilder), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: + () => Navigator.of( + context, + ).restorablePush(restorableTestRouteBuilder), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); - verify(() => navigator.restorablePush(restorableTestRouteBuilder)) - .called(1); + verify( + () => navigator.restorablePush(restorableTestRouteBuilder), + ).called(1); }); testWidgets('mocks .restorablePushAndRemoveUntil calls', (tester) async { - when(() => navigator.restorablePushAndRemoveUntil(any(), any())) - .thenReturn(testRouteName); + when( + () => navigator.restorablePushAndRemoveUntil(any(), any()), + ).thenReturn(testRouteName); await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context).restorablePushAndRemoveUntil( - restorableTestRouteBuilder, - testRoutePredicate, - ), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: + () => Navigator.of(context).restorablePushAndRemoveUntil( + restorableTestRouteBuilder, + testRoutePredicate, + ), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); @@ -319,37 +345,43 @@ void main() { }); testWidgets('mocks .restorablePushNamed calls', (tester) async { - when(() => navigator.restorablePushNamed(any())) - .thenReturn(testRouteName); + when( + () => navigator.restorablePushNamed(any()), + ).thenReturn(testRouteName); await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => - Navigator.of(context).restorablePushNamed(testRouteName), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: + () => + Navigator.of(context).restorablePushNamed(testRouteName), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); verify(() => navigator.restorablePushNamed(testRouteName)).called(1); }); - testWidgets('mocks .restorablePushNamedAndRemoveUntil calls', - (tester) async { - when(() => navigator.restorablePushNamedAndRemoveUntil(any(), any())) - .thenReturn(testRouteName); + testWidgets('mocks .restorablePushNamedAndRemoveUntil calls', ( + tester, + ) async { + when( + () => navigator.restorablePushNamedAndRemoveUntil(any(), any()), + ).thenReturn(testRouteName); await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => - Navigator.of(context).restorablePushNamedAndRemoveUntil( - testRouteName, - testRoutePredicate, - ), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: + () => Navigator.of(context).restorablePushNamedAndRemoveUntil( + testRouteName, + testRoutePredicate, + ), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); @@ -362,16 +394,20 @@ void main() { }); testWidgets('mocks .restorablePushReplacement calls', (tester) async { - when(() => navigator.restorablePushReplacement(any())) - .thenReturn(testRouteName); + when( + () => navigator.restorablePushReplacement(any()), + ).thenReturn(testRouteName); await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context) - .restorablePushReplacement(restorableTestRouteBuilder), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: + () => Navigator.of( + context, + ).restorablePushReplacement(restorableTestRouteBuilder), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); @@ -381,21 +417,26 @@ void main() { }); testWidgets('mocks .restorablePushReplacementNamed calls', (tester) async { - when(() => navigator.restorablePushReplacementNamed(any())) - .thenReturn(testRouteName); + when( + () => navigator.restorablePushReplacementNamed(any()), + ).thenReturn(testRouteName); await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context) - .restorablePushReplacementNamed(testRouteName), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: + () => Navigator.of( + context, + ).restorablePushReplacementNamed(testRouteName), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); - verify(() => navigator.restorablePushReplacementNamed(testRouteName)) - .called(1); + verify( + () => navigator.restorablePushReplacementNamed(testRouteName), + ).called(1); }); testWidgets('mocks .restorableReplace calls', (tester) async { @@ -408,13 +449,15 @@ void main() { await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context).restorableReplace( - oldRoute: testRoute, - newRouteBuilder: restorableTestRouteBuilder, - ), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: + () => Navigator.of(context).restorableReplace( + oldRoute: testRoute, + newRouteBuilder: restorableTestRouteBuilder, + ), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton)); @@ -436,13 +479,15 @@ void main() { await tester.pumpTest( navigator: navigator, - builder: (context) => TextButton( - onPressed: () => Navigator.of(context).restorableReplaceRouteBelow( - anchorRoute: testRoute, - newRouteBuilder: restorableTestRouteBuilder, - ), - child: const Text('Trigger'), - ), + builder: + (context) => TextButton( + onPressed: + () => Navigator.of(context).restorableReplaceRouteBelow( + anchorRoute: testRoute, + newRouteBuilder: restorableTestRouteBuilder, + ), + child: const Text('Trigger'), + ), ); await tester.tap(find.byType(TextButton));