From 6a9c8a5557b7593cb588dfeee65575c5c2f2acda Mon Sep 17 00:00:00 2001 From: arturplaczek Date: Tue, 19 Apr 2022 12:35:58 +0200 Subject: [PATCH] fix: apply code review --- lib/app/view/app.dart | 12 ++---- lib/game/view/pinball_game_page.dart | 15 ++++--- .../view/widgets/play_button_overlay.dart | 2 +- lib/leaderboard/view/leaderboard_page.dart | 2 +- lib/theme/view/character_selection_page.dart | 6 +-- test/game/view/pinball_game_page_test.dart | 41 +++++++++++++------ .../widgets/play_button_overlay_test.dart | 4 +- .../view/character_selection_page_test.dart | 6 +-- 8 files changed, 48 insertions(+), 40 deletions(-) diff --git a/lib/app/view/app.dart b/lib/app/view/app.dart index b27a6539..2780b608 100644 --- a/lib/app/view/app.dart +++ b/lib/app/view/app.dart @@ -37,20 +37,14 @@ class App extends StatelessWidget { ], child: BlocProvider( create: (context) => ThemeCubit(), - child: MaterialApp( + child: const MaterialApp( title: 'I/O Pinball', - theme: ThemeData( - appBarTheme: const AppBarTheme(color: Color(0xFF13B9FF)), - colorScheme: ColorScheme.fromSwatch( - accentColor: const Color(0xFF13B9FF), - ), - ), - localizationsDelegates: const [ + localizationsDelegates: [ AppLocalizations.delegate, GlobalMaterialLocalizations.delegate, ], supportedLocales: AppLocalizations.supportedLocales, - home: const PinballGamePage(), + home: PinballGamePage(), ), ), ); diff --git a/lib/game/view/pinball_game_page.dart b/lib/game/view/pinball_game_page.dart index a42efb24..3ba387d0 100644 --- a/lib/game/view/pinball_game_page.dart +++ b/lib/game/view/pinball_game_page.dart @@ -5,7 +5,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:pinball/game/game.dart'; -import 'package:pinball/start_game/bloc/start_game_bloc.dart'; +import 'package:pinball/start_game/start_game.dart'; import 'package:pinball/theme/theme.dart'; import 'package:pinball_audio/pinball_audio.dart'; @@ -76,17 +76,16 @@ class PinballGameView extends StatelessWidget { return Scaffold( backgroundColor: Colors.blue, body: isLoading - ? const PinballGameLoadedView() - : PinballGameBody( + ? const _PinballGameLoadingView() + : PinballGameLoadedView( game: game, ), ); } } -@visibleForTesting -class PinballGameLoadedView extends StatelessWidget { - const PinballGameLoadedView({Key? key}) : super(key: key); +class _PinballGameLoadingView extends StatelessWidget { + const _PinballGameLoadingView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -107,8 +106,8 @@ class PinballGameLoadedView extends StatelessWidget { } @visibleForTesting -class PinballGameBody extends StatelessWidget { - const PinballGameBody({ +class PinballGameLoadedView extends StatelessWidget { + const PinballGameLoadedView({ Key? key, required this.game, }) : super(key: key); diff --git a/lib/game/view/widgets/play_button_overlay.dart b/lib/game/view/widgets/play_button_overlay.dart index 2fa963fa..27cb59a1 100644 --- a/lib/game/view/widgets/play_button_overlay.dart +++ b/lib/game/view/widgets/play_button_overlay.dart @@ -34,7 +34,7 @@ class PlayButtonOverlay extends StatelessWidget { child: SizedBox( height: height, width: width, - child: const CharacterSelectionPage(), + child: const CharacterSelectionDialog(), ), ); }, diff --git a/lib/leaderboard/view/leaderboard_page.dart b/lib/leaderboard/view/leaderboard_page.dart index 54b364e9..61e63d75 100644 --- a/lib/leaderboard/view/leaderboard_page.dart +++ b/lib/leaderboard/view/leaderboard_page.dart @@ -69,7 +69,7 @@ class LeaderboardView extends StatelessWidget { const SizedBox(height: 20), TextButton( onPressed: () => Navigator.of(context).push( - CharacterSelectionPage.route(), + CharacterSelectionDialog.route(), ), child: Text(l10n.retry), ), diff --git a/lib/theme/view/character_selection_page.dart b/lib/theme/view/character_selection_page.dart index 8aa5368c..22aaee22 100644 --- a/lib/theme/view/character_selection_page.dart +++ b/lib/theme/view/character_selection_page.dart @@ -7,12 +7,12 @@ import 'package:pinball/start_game/start_game.dart'; import 'package:pinball/theme/theme.dart'; import 'package:pinball_theme/pinball_theme.dart'; -class CharacterSelectionPage extends StatelessWidget { - const CharacterSelectionPage({Key? key}) : super(key: key); +class CharacterSelectionDialog extends StatelessWidget { + const CharacterSelectionDialog({Key? key}) : super(key: key); static Route route() { return MaterialPageRoute( - builder: (_) => const CharacterSelectionPage(), + builder: (_) => const CharacterSelectionDialog(), ); } diff --git a/test/game/view/pinball_game_page_test.dart b/test/game/view/pinball_game_page_test.dart index 8a907cc1..6f7103b8 100644 --- a/test/game/view/pinball_game_page_test.dart +++ b/test/game/view/pinball_game_page_test.dart @@ -72,22 +72,37 @@ void main() { ), findsOneWidget, ); + }, + ); - final loadedAssetsState = AssetsManagerState( - loadables: [Future.value()], - loaded: [Future.value()], - ); - whenListen( - assetsManagerCubit, - Stream.value(loadedAssetsState), - initialState: loadedAssetsState, - ); + testWidgets( + 'renders PinballGameLoadedView after resources have been loaded', + (tester) async { + final assetsManagerCubit = MockAssetsManagerCubit(); + + final loadedAssetsState = AssetsManagerState( + loadables: [Future.value()], + loaded: [Future.value()], + ); + whenListen( + assetsManagerCubit, + Stream.value(loadedAssetsState), + initialState: loadedAssetsState, + ); + + await tester.pumpApp( + PinballGameView( + game: game, + ), + assetsManagerCubit: assetsManagerCubit, + themeCubit: themeCubit, + gameBloc: gameBloc, + ); - await tester.pump(); + await tester.pump(); - expect(find.byType(PinballGameBody), findsOneWidget); - }, - ); + expect(find.byType(PinballGameLoadedView), findsOneWidget); + }); group('route', () { Future pumpRoute({ diff --git a/test/game/view/widgets/play_button_overlay_test.dart b/test/game/view/widgets/play_button_overlay_test.dart index 20d3ab6b..83923520 100644 --- a/test/game/view/widgets/play_button_overlay_test.dart +++ b/test/game/view/widgets/play_button_overlay_test.dart @@ -33,14 +33,14 @@ void main() { verify(gameFlowController.start).called(1); }); - testWidgets('is showing CharacterSelectionPage dialog when taped', + testWidgets('is showing CharacterSelectionPage dialog when tapped', (tester) async { await tester.pumpApp(PlayButtonOverlay(game: game)); await tester.tap(find.text('Play')); await tester.pump(); - expect(find.byType(CharacterSelectionPage), findsOneWidget); + expect(find.byType(CharacterSelectionDialog), findsOneWidget); }); }); } diff --git a/test/theme/view/character_selection_page_test.dart b/test/theme/view/character_selection_page_test.dart index e3543c4b..8b76ac35 100644 --- a/test/theme/view/character_selection_page_test.dart +++ b/test/theme/view/character_selection_page_test.dart @@ -25,7 +25,7 @@ void main() { group('CharacterSelectionPage', () { testWidgets('renders CharacterSelectionView', (tester) async { await tester.pumpApp( - CharacterSelectionPage(), + CharacterSelectionDialog(), themeCubit: themeCubit, ); expect(find.byType(CharacterSelectionView), findsOneWidget); @@ -39,7 +39,7 @@ void main() { return ElevatedButton( onPressed: () { Navigator.of(context) - .push(CharacterSelectionPage.route()); + .push(CharacterSelectionDialog.route()); }, child: Text('Tap me'), ); @@ -52,7 +52,7 @@ void main() { await tester.tap(find.text('Tap me')); await tester.pumpAndSettle(); - expect(find.byType(CharacterSelectionPage), findsOneWidget); + expect(find.byType(CharacterSelectionDialog), findsOneWidget); }); });