diff --git a/test/game/components/flutter_forest_test.dart b/test/game/components/flutter_forest/flutter_forest_test.dart similarity index 72% rename from test/game/components/flutter_forest_test.dart rename to test/game/components/flutter_forest/flutter_forest_test.dart index 2c37631e..0db37840 100644 --- a/test/game/components/flutter_forest_test.dart +++ b/test/game/components/flutter_forest/flutter_forest_test.dart @@ -1,11 +1,13 @@ // ignore_for_file: cascade_invocations +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/game.dart'; import 'package:pinball_components/pinball_components.dart'; -import '../../helpers/helpers.dart'; +import '../../../helpers/helpers.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); @@ -32,7 +34,6 @@ void main() { (game) async { final flutterForest = FlutterForest(); await game.ensureAdd(flutterForest); - expect(game.contains(flutterForest), isTrue); }, ); @@ -77,5 +78,25 @@ void main() { }, ); }); + + // TODO(alestiago): Consider refactoring once the following is merged: + // https://github.com/flame-engine/flame/pull/1538 + // ignore: public_member_api_docs + flameTester.test('closes bloc when removed', (game) async { + final bloc = MockFlutterForestCubit(); + whenListen( + bloc, + const Stream.empty(), + initialState: const FlutterForestState.initial(), + ); + when(bloc.close).thenAnswer((_) async {}); + final flutterForest = FlutterForest.test(bloc: bloc); + + await game.ensureAdd(flutterForest); + game.remove(flutterForest); + await game.ready(); + + verify(bloc.close).called(1); + }); }); }