From d1bbef31f158617c4bc043d55275d8b766f72127 Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Fri, 29 Apr 2022 10:40:19 +0200 Subject: [PATCH] test: blink behavior --- .../multiball/cubit/multiball_state.dart | 4 ++-- .../multiball_blinking_behavior_test.dart | 13 +++++++---- .../behaviors/multiballs_behavior_test.dart | 23 +++++++++++++++++++ test/helpers/mocks.dart | 2 ++ 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/packages/pinball_components/lib/src/components/multiball/cubit/multiball_state.dart b/packages/pinball_components/lib/src/components/multiball/cubit/multiball_state.dart index b4ab65ef..4fc55ab7 100644 --- a/packages/pinball_components/lib/src/components/multiball/cubit/multiball_state.dart +++ b/packages/pinball_components/lib/src/components/multiball/cubit/multiball_state.dart @@ -15,12 +15,12 @@ enum MultiballAnimationState { } class MultiballState extends Equatable { - MultiballState({ + const MultiballState({ required this.lightState, required this.animationState, }); - MultiballState.initial() + const MultiballState.initial() : this( lightState: MultiballLightState.dimmed, animationState: MultiballAnimationState.stopped, 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 c3dbb013..27210c72 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 @@ -21,23 +21,28 @@ void main() { setUp: (game, tester) async { final behavior = MultiballBlinkingBehavior(); final bloc = MockMultiballCubit(); - final streamController = StreamController(); + final streamController = StreamController(); whenListen( bloc, streamController.stream, - initialState: MultiballLightState.dimmed, + initialState: MultiballState.initial(), ); final multiball = Multiball.test(bloc: bloc); await multiball.add(behavior); await game.ensureAdd(multiball); - streamController.add(MultiballLightState.lit); + streamController.add( + MultiballState( + animationState: MultiballAnimationState.animated, + lightState: MultiballLightState.lit, + ), + ); await tester.pump(); game.update(0.05); await streamController.close(); - verify(bloc.onDimmed).called(1); + verify(bloc.onBlink).called(1); }, ); }, diff --git a/test/game/components/multiballs/behaviors/multiballs_behavior_test.dart b/test/game/components/multiballs/behaviors/multiballs_behavior_test.dart index 61b4cee4..a8bde464 100644 --- a/test/game/components/multiballs/behaviors/multiballs_behavior_test.dart +++ b/test/game/components/multiballs/behaviors/multiballs_behavior_test.dart @@ -1,8 +1,11 @@ +// ignore_for_file: cascade_invocations + import 'dart:async'; import 'package:bloc_test/bloc_test.dart'; import 'package:flame_test/flame_test.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; import 'package:pinball/game/components/multiballs/behaviors/behaviors.dart'; import 'package:pinball/game/game.dart'; import 'package:pinball_components/pinball_components.dart'; @@ -33,5 +36,25 @@ void main() { blocBuilder: () => gameBloc, assets: assets, ); + + flameBlocTester.testGameWidget( + 'adds a new ball to the game when all bumpers are active', + setUp: (game, tester) async { + final behavior = MultiballsBehavior(); + final parent = Multiballs.test(); + final multiballs = [ + Multiball.test(bloc: MockMultiballCubit()), + Multiball.test(bloc: MockMultiballCubit()), + Multiball.test(bloc: MockMultiballCubit()), + ]; + await parent.addAll(multiballs); + await game.ensureAdd(parent); + await parent.ensureAdd(behavior); + + for (final multiball in multiballs) { + verify(() => multiball.bloc.onAnimate()).called(1); + } + }, + ); }); } diff --git a/test/helpers/mocks.dart b/test/helpers/mocks.dart index a6250356..12227383 100644 --- a/test/helpers/mocks.dart +++ b/test/helpers/mocks.dart @@ -93,3 +93,5 @@ class MockSparkyBumper extends Mock implements SparkyBumper {} class MockMultiball extends Mock implements Multiball {} class MockMultiballGroup extends Mock implements Multiballs {} + +class MockMultiballCubit extends Mock implements MultiballCubit {}