chore: todos for refactor multiball childrens

pull/235/head
RuiAlonso 3 years ago
parent 638c48d6c7
commit 05f6b7c900

@ -31,11 +31,16 @@ class MultiballGroup extends Component
Future<void> onLoad() async { Future<void> onLoad() async {
await super.onLoad(); await super.onLoad();
multiballA = Multiball.a();
multiballB = Multiball.b();
multiballC = Multiball.c();
multiballD = Multiball.d();
await addAll([ await addAll([
multiballA = Multiball.a(), multiballA,
multiballB = Multiball.b(), multiballB,
multiballC = Multiball.c(), multiballC,
multiballD = Multiball.d(), multiballD,
]); ]);
} }
} }
@ -60,6 +65,9 @@ class MultiballController extends ComponentController<MultiballGroup>
final hasMultiball = state.bonusHistory.contains(GameBonus.dashNest); final hasMultiball = state.bonusHistory.contains(GameBonus.dashNest);
if (hasMultiball) { if (hasMultiball) {
// TODO(ruimiguel): change to animate every children without different
// properties using component.children.whereType<Multiball>().forEach
// once able to mock the children ComponentSet.
component.multiballA.animate(); component.multiballA.animate();
component.multiballB.animate(); component.multiballB.animate();
component.multiballC.animate(); component.multiballC.animate();

@ -1,5 +1,6 @@
// ignore_for_file: cascade_invocations // ignore_for_file: cascade_invocations
import 'package:flame/components.dart';
import 'package:flame_test/flame_test.dart'; import 'package:flame_test/flame_test.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart'; import 'package:mocktail/mocktail.dart';
@ -89,21 +90,35 @@ void main() {
flameTester.test( flameTester.test(
'blink multiballs when state changes', 'blink multiballs when state changes',
(game) async { (game) async {
// TODO(ruimiguel): search how to mock MultiballGroup children
// ComponentSet to improve this test.
final multiballGroup = MockMultiballGroup(); final multiballGroup = MockMultiballGroup();
final multiball = MockMultiball(); final multiballA = MockMultiball();
final multiballB = MockMultiball();
final multiballC = MockMultiball();
final multiballD = MockMultiball();
final controller = MultiballController(multiballGroup); final controller = MultiballController(multiballGroup);
when(() => multiballGroup.multiballA).thenReturn(multiball); when(() => multiballGroup.multiballA).thenReturn(multiballA);
when(() => multiballGroup.multiballB).thenReturn(multiball); when(() => multiballGroup.multiballB).thenReturn(multiballB);
when(() => multiballGroup.multiballC).thenReturn(multiball); when(() => multiballGroup.multiballC).thenReturn(multiballC);
when(() => multiballGroup.multiballD).thenReturn(multiball); when(() => multiballGroup.multiballD).thenReturn(multiballD);
when(multiball.animate).thenAnswer((_) async => () {}); 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( controller.onNewState(
const GameState.initial() const GameState.initial()
.copyWith(bonusHistory: [GameBonus.dashNest]), .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);
}, },
); );
}, },

Loading…
Cancel
Save