diff --git a/test/game/components/game_bloc_status_listener_test.dart b/test/game/components/game_bloc_status_listener_test.dart index d6234f33..de60c825 100644 --- a/test/game/components/game_bloc_status_listener_test.dart +++ b/test/game/components/game_bloc_status_listener_test.dart @@ -43,96 +43,87 @@ void main() { late PinballGame game; late Backbox backbox; late CameraController cameraController; - late GameBlocStatusListener gameBlocStatusListener; + late GameBlocStatusListener gameFlowController; late PinballAudio pinballAudio; late ActiveOverlaysNotifier overlays; - group('onNewState', () { - late PinballGame game; - late Backbox backbox; - late CameraController cameraController; - late GameBlocStatusListener gameFlowController; - late PinballAudio pinballAudio; - late ActiveOverlaysNotifier overlays; - - setUp(() { - game = _MockPinballGame(); - backbox = _MockBackbox(); - cameraController = _MockCameraController(); - gameFlowController = GameBlocStatusListener(); - overlays = _MockActiveOverlaysNotifier(); - pinballAudio = _MockPinballAudio(); - - gameFlowController.mockGameRef(game); - when( + setUp(() { + game = _MockPinballGame(); + backbox = _MockBackbox(); + cameraController = _MockCameraController(); + gameFlowController = GameBlocStatusListener(); + overlays = _MockActiveOverlaysNotifier(); + pinballAudio = _MockPinballAudio(); + + gameFlowController.mockGameRef(game); + when( + () => backbox.initialsInput( + score: any(named: 'score'), + characterIconPath: any(named: 'characterIconPath'), + onSubmit: any(named: 'onSubmit'), + ), + ).thenAnswer((_) async {}); + when(cameraController.focusOnWaitingBackbox).thenAnswer((_) async {}); + when(cameraController.focusOnGame).thenAnswer((_) async {}); + + when(() => overlays.remove(any())).thenAnswer((_) => true); + + when(() => game.descendants().whereType()) + .thenReturn([backbox]); + when(game.firstChild).thenReturn(cameraController); + when(() => game.overlays).thenReturn(overlays); + when(() => game.characterTheme).thenReturn(DashTheme()); + when(() => game.audio).thenReturn(pinballAudio); + }); + + test( + 'changes the backbox display and camera correctly ' + 'when the game is over', + () { + final state = GameState( + totalScore: 0, + roundScore: 10, + multiplier: 1, + rounds: 0, + bonusHistory: const [], + status: GameStatus.gameOver, + ); + gameFlowController.onNewState(state); + + verify( () => backbox.initialsInput( - score: any(named: 'score'), + score: state.displayScore, characterIconPath: any(named: 'characterIconPath'), onSubmit: any(named: 'onSubmit'), ), - ).thenAnswer((_) async {}); - when(cameraController.focusOnWaitingBackbox).thenAnswer((_) async {}); - when(cameraController.focusOnGame).thenAnswer((_) async {}); - - when(() => overlays.remove(any())).thenAnswer((_) => true); - - when(() => game.descendants().whereType()) - .thenReturn([backbox]); - when(game.firstChild).thenReturn(cameraController); - when(() => game.overlays).thenReturn(overlays); - when(() => game.characterTheme).thenReturn(DashTheme()); - when(() => game.audio).thenReturn(pinballAudio); - }); - - test( - 'changes the backbox display and camera correctly ' - 'when the game is over', - () { - final state = GameState( - totalScore: 0, - roundScore: 10, - multiplier: 1, - rounds: 0, - bonusHistory: const [], - status: GameStatus.gameOver, - ); - gameFlowController.onNewState(state); - - verify( - () => backbox.initialsInput( - score: state.displayScore, - characterIconPath: any(named: 'characterIconPath'), - onSubmit: any(named: 'onSubmit'), - ), - ).called(1); - verify(cameraController.focusOnGameOverBackbox).called(1); - }, - ); - - test( - 'changes the backbox and camera correctly when it is not a game over', - () { - gameFlowController.onNewState( - GameState.initial().copyWith(status: GameStatus.playing), - ); - - verify(cameraController.focusOnGame).called(1); - verify(() => overlays.remove(PinballGame.playButtonOverlay)) - .called(1); - }, - ); - - test( - 'plays the background music on start', - () { - gameFlowController.onNewState( - GameState.initial().copyWith(status: GameStatus.playing), - ); - - verify(pinballAudio.backgroundMusic).called(1); - }, - ); - }); + ).called(1); + verify(cameraController.focusOnGameOverBackbox).called(1); + }, + ); + + test( + 'changes the backbox and camera correctly when it is not a game over', + () { + gameFlowController.onNewState( + GameState.initial().copyWith(status: GameStatus.playing), + ); + + verify(cameraController.focusOnGame).called(1); + verify(() => overlays.remove(PinballGame.playButtonOverlay)) + .called(1); + }, + ); + + test( + 'plays the background music on start', + () { + gameFlowController.onNewState( + GameState.initial().copyWith(status: GameStatus.playing), + ); + + verify(pinballAudio.backgroundMusic).called(1); + }, + ); }); }); }