From 05f6b7c90012e1242a3d963ce7a2e1efb70546fb Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Wed, 27 Apr 2022 11:46:06 +0200 Subject: [PATCH] chore: todos for refactor multiball childrens --- lib/game/components/controlled_multiball.dart | 16 +++++++--- .../components/controlled_multiball_test.dart | 29 ++++++++++++++----- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/lib/game/components/controlled_multiball.dart b/lib/game/components/controlled_multiball.dart index 6fa24d96..748761a5 100644 --- a/lib/game/components/controlled_multiball.dart +++ b/lib/game/components/controlled_multiball.dart @@ -31,11 +31,16 @@ class MultiballGroup extends Component Future onLoad() async { await super.onLoad(); + multiballA = Multiball.a(); + multiballB = Multiball.b(); + multiballC = Multiball.c(); + multiballD = Multiball.d(); + await addAll([ - multiballA = Multiball.a(), - multiballB = Multiball.b(), - multiballC = Multiball.c(), - multiballD = Multiball.d(), + multiballA, + multiballB, + multiballC, + multiballD, ]); } } @@ -60,6 +65,9 @@ class MultiballController extends ComponentController final hasMultiball = state.bonusHistory.contains(GameBonus.dashNest); if (hasMultiball) { + // TODO(ruimiguel): change to animate every children without different + // properties using component.children.whereType().forEach + // once able to mock the children ComponentSet. component.multiballA.animate(); component.multiballB.animate(); component.multiballC.animate(); diff --git a/test/game/components/controlled_multiball_test.dart b/test/game/components/controlled_multiball_test.dart index f748d4ba..4d953a3b 100644 --- a/test/game/components/controlled_multiball_test.dart +++ b/test/game/components/controlled_multiball_test.dart @@ -1,5 +1,6 @@ // ignore_for_file: cascade_invocations +import 'package:flame/components.dart'; import 'package:flame_test/flame_test.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; @@ -89,21 +90,35 @@ void main() { flameTester.test( 'blink multiballs when state changes', (game) async { + // TODO(ruimiguel): search how to mock MultiballGroup children + // ComponentSet to improve this test. final multiballGroup = MockMultiballGroup(); - final multiball = MockMultiball(); + final multiballA = MockMultiball(); + final multiballB = MockMultiball(); + final multiballC = MockMultiball(); + final multiballD = MockMultiball(); final controller = MultiballController(multiballGroup); - when(() => multiballGroup.multiballA).thenReturn(multiball); - when(() => multiballGroup.multiballB).thenReturn(multiball); - when(() => multiballGroup.multiballC).thenReturn(multiball); - when(() => multiballGroup.multiballD).thenReturn(multiball); - when(multiball.animate).thenAnswer((_) async => () {}); + when(() => multiballGroup.multiballA).thenReturn(multiballA); + when(() => multiballGroup.multiballB).thenReturn(multiballB); + when(() => multiballGroup.multiballC).thenReturn(multiballC); + when(() => multiballGroup.multiballD).thenReturn(multiballD); + when(() => multiballGroup.children).thenReturn( + {multiballA} as ComponentSet, + ); + when(multiballA.animate).thenAnswer((_) async => () {}); + when(multiballB.animate).thenAnswer((_) async => () {}); + when(multiballC.animate).thenAnswer((_) async => () {}); + when(multiballD.animate).thenAnswer((_) async => () {}); controller.onNewState( const GameState.initial() .copyWith(bonusHistory: [GameBonus.dashNest]), ); - verify(() => multiball.animate).called(4); + verify(multiballA.animate).called(1); + verify(multiballB.animate).called(1); + verify(multiballC.animate).called(1); + verify(multiballD.animate).called(1); }, ); },