diff --git a/lib/game/view/widgets/play_button_overlay.dart b/lib/game/view/widgets/play_button_overlay.dart index f90ebb98..21493ca2 100644 --- a/lib/game/view/widgets/play_button_overlay.dart +++ b/lib/game/view/widgets/play_button_overlay.dart @@ -1,20 +1,14 @@ import 'package:flutter/material.dart'; -import 'package:pinball/game/pinball_game.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:pinball/l10n/l10n.dart'; -import 'package:pinball/select_character/select_character.dart'; +import 'package:pinball/start_game/start_game.dart'; /// {@template play_button_overlay} /// [Widget] that renders the button responsible to starting the game /// {@endtemplate} class PlayButtonOverlay extends StatelessWidget { /// {@macro play_button_overlay} - const PlayButtonOverlay({ - Key? key, - required PinballGame game, - }) : _game = game, - super(key: key); - - final PinballGame _game; + const PlayButtonOverlay({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -23,22 +17,7 @@ class PlayButtonOverlay extends StatelessWidget { return Center( child: ElevatedButton( onPressed: () { - _game.gameFlowController.start(); - showDialog( - context: context, - barrierDismissible: false, - builder: (_) { - final height = MediaQuery.of(context).size.height * 0.5; - - return Center( - child: SizedBox( - height: height, - width: height * 1.4, - child: const CharacterSelectionDialog(), - ), - ); - }, - ); + context.read().add(const PlayTapped()); }, child: Text(l10n.play), ), diff --git a/test/game/view/widgets/play_button_overlay_test.dart b/test/game/view/widgets/play_button_overlay_test.dart index 0345978d..10277dee 100644 --- a/test/game/view/widgets/play_button_overlay_test.dart +++ b/test/game/view/widgets/play_button_overlay_test.dart @@ -1,46 +1,42 @@ +import 'package:bloc_test/bloc_test.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; import 'package:pinball/game/game.dart'; -import 'package:pinball/select_character/select_character.dart'; +import 'package:pinball/start_game/bloc/start_game_bloc.dart'; import '../../../helpers/helpers.dart'; void main() { group('PlayButtonOverlay', () { - late PinballGame game; - late GameFlowController gameFlowController; + late StartGameBloc startGameBloc; setUp(() { - game = MockPinballGame(); - gameFlowController = MockGameFlowController(); + startGameBloc = MockStartGameBloc(); - when(() => game.gameFlowController).thenReturn(gameFlowController); - when(gameFlowController.start).thenAnswer((_) {}); + whenListen( + startGameBloc, + Stream.value(const StartGameState.initial()), + initialState: const StartGameState.initial(), + ); }); testWidgets('renders correctly', (tester) async { - await tester.pumpApp(PlayButtonOverlay(game: game)); + await tester.pumpApp(const PlayButtonOverlay()); expect(find.text('Play'), findsOneWidget); }); - testWidgets('calls gameFlowController.start when taped', (tester) async { - await tester.pumpApp(PlayButtonOverlay(game: game)); - - await tester.tap(find.text('Play')); - await tester.pump(); - - verify(gameFlowController.start).called(1); - }); - - testWidgets('displays CharacterSelectionDialog when tapped', + testWidgets('calls PlayTapped event to StartGameBloc when taped on play', (tester) async { - await tester.pumpApp(PlayButtonOverlay(game: game)); + await tester.pumpApp( + const PlayButtonOverlay(), + startGameBloc: startGameBloc, + ); await tester.tap(find.text('Play')); await tester.pump(); - expect(find.byType(CharacterSelectionDialog), findsOneWidget); + verify(() => startGameBloc.add(const PlayTapped())).called(1); }); }); }