From 7e82316824fcb2c620f726ec9085bfb0d0551c1c Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Fri, 18 Mar 2022 10:33:13 +0100 Subject: [PATCH] feat: added navigator helper method --- test/helpers/helpers.dart | 1 + test/helpers/navigator.dart | 27 +++++++++++++++++++ .../view/leaderboard_page_test.dart | 25 +++-------------- 3 files changed, 32 insertions(+), 21 deletions(-) create mode 100644 test/helpers/navigator.dart diff --git a/test/helpers/helpers.dart b/test/helpers/helpers.dart index 88b9c04d..223ec627 100644 --- a/test/helpers/helpers.dart +++ b/test/helpers/helpers.dart @@ -8,4 +8,5 @@ export 'builders.dart'; export 'extensions.dart'; export 'key_testers.dart'; export 'mocks.dart'; +export 'navigator.dart'; export 'pump_app.dart'; diff --git a/test/helpers/navigator.dart b/test/helpers/navigator.dart new file mode 100644 index 00000000..d919cdb3 --- /dev/null +++ b/test/helpers/navigator.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'helpers.dart'; + +Future expectNavigatesTo(WidgetTester tester, Route route) async { + // ignore: avoid_dynamic_calls + await tester.pumpApp( + Scaffold( + body: Builder( + builder: (context) { + return ElevatedButton( + onPressed: () { + Navigator.of(context).push(route); + }, + child: const Text('Tap me'), + ); + }, + ), + ), + ); + + await tester.tap(find.text('Tap me')); + await tester.pumpAndSettle(); + + expect(find.byType(Type), findsOneWidget); +} diff --git a/test/leaderboard/view/leaderboard_page_test.dart b/test/leaderboard/view/leaderboard_page_test.dart index c2026fc0..a58c2b1a 100644 --- a/test/leaderboard/view/leaderboard_page_test.dart +++ b/test/leaderboard/view/leaderboard_page_test.dart @@ -23,29 +23,12 @@ void main() { }); testWidgets('route returns a valid navigation route', (tester) async { - await tester.pumpApp( - Scaffold( - body: Builder( - builder: (context) { - return ElevatedButton( - onPressed: () { - Navigator.of(context).push( - LeaderboardPage.route( - theme: DashTheme(), - ), - ); - }, - child: const Text('Tap me'), - ); - }, - ), + await expectNavigatesTo( + tester, + LeaderboardPage.route( + theme: DashTheme(), ), ); - - await tester.tap(find.text('Tap me')); - await tester.pumpAndSettle(); - - expect(find.byType(LeaderboardPage), findsOneWidget); }); });