From 40526bf0feac9bec08bcc56efd180023f666e12d Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Fri, 29 Apr 2022 12:31:49 +0200 Subject: [PATCH] test: trying to fix tests --- .../multiball_blinking_behavior_test.dart | 36 +++++++++++++++++-- test/game/pinball_game_test.dart | 28 +++++++++++---- 2 files changed, 56 insertions(+), 8 deletions(-) diff --git a/packages/pinball_components/test/src/components/multiball/behaviors/multiball_blinking_behavior_test.dart b/packages/pinball_components/test/src/components/multiball/behaviors/multiball_blinking_behavior_test.dart index 11429d3f..e40b4655 100644 --- a/packages/pinball_components/test/src/components/multiball/behaviors/multiball_blinking_behavior_test.dart +++ b/packages/pinball_components/test/src/components/multiball/behaviors/multiball_blinking_behavior_test.dart @@ -49,7 +49,7 @@ void main() { ); flameTester.testGameWidget( - 'stops animation after 2 seconds', + 'calls onStop stops animation', setUp: (game, tester) async { final behavior = MultiballBlinkingBehavior(); final bloc = MockMultiballCubit(); @@ -72,7 +72,7 @@ void main() { ), ); await tester.pump(); - game.update(2); + game.update(0.1); streamController.add( MultiballState( @@ -80,6 +80,38 @@ void main() { lightState: MultiballLightState.lit, ), ); + await tester.pump(); + + await streamController.close(); + verify(bloc.onStop).called(1); + }, + ); + + flameTester.testGameWidget( + 'stops animation after 2 seconds', + setUp: (game, tester) async { + final behavior = MultiballBlinkingBehavior(); + final bloc = MockMultiballCubit(); + final streamController = StreamController(); + whenListen( + bloc, + streamController.stream, + initialState: MultiballState.initial(), + ); + when(bloc.onBlink).thenAnswer((_) async {}); + + final multiball = Multiball.test(bloc: bloc); + await multiball.add(behavior); + await game.ensureAdd(multiball); + + streamController.add( + MultiballState( + animationState: MultiballAnimationState.animated, + lightState: MultiballLightState.lit, + ), + ); + await tester.pump(); + game.update(2); await streamController.close(); verify(bloc.onStop).called(1); diff --git a/test/game/pinball_game_test.dart b/test/game/pinball_game_test.dart index 2b2d68d8..bd91bd33 100644 --- a/test/game/pinball_game_test.dart +++ b/test/game/pinball_game_test.dart @@ -1,5 +1,6 @@ // ignore_for_file: cascade_invocations +import 'package:bloc_test/bloc_test.dart'; import 'package:flame/components.dart'; import 'package:flame/game.dart'; import 'package:flame_test/flame_test.dart'; @@ -94,6 +95,17 @@ void main() { Assets.images.sparky.bumper.c.inactive.keyName, ]; + late GameBloc gameBloc; + + setUp(() { + gameBloc = MockGameBloc(); + whenListen( + gameBloc, + const Stream.empty(), + initialState: const GameState.initial(), + ); + }); + final flameTester = FlameTester( () => PinballTestGame(assets: assets), ); @@ -101,11 +113,15 @@ void main() { () => DebugPinballTestGame(assets: assets), ); + final flameBlocTester = FlameBlocTester( + gameBuilder: () => PinballTestGame(assets: assets), + blocBuilder: () => gameBloc, + ); group('PinballGame', () { group('components', () { // TODO(alestiago): tests that Blueprints get added once the Blueprint // class is removed. - flameTester.test( + flameBlocTester.test( 'has only one Drain', (game) async { await game.ready(); @@ -116,7 +132,7 @@ void main() { }, ); - flameTester.test( + flameBlocTester.test( 'has only one BottomGroup', (game) async { await game.ready(); @@ -128,7 +144,7 @@ void main() { }, ); - flameTester.test( + flameBlocTester.test( 'has only one Plunger', (game) async { await game.ready(); @@ -139,7 +155,7 @@ void main() { }, ); - flameTester.test('has one FlutterForest', (game) async { + flameBlocTester.test('has one FlutterForest', (game) async { await game.ready(); expect( game.children.whereType().length, @@ -147,7 +163,7 @@ void main() { ); }); - flameTester.test( + flameBlocTester.test( 'has only one Multiballs', (game) async { await game.ready(); @@ -159,7 +175,7 @@ void main() { }, ); - flameTester.test( + flameBlocTester.test( 'one GoogleWord', (game) async { await game.ready();