test: tested DashNestBumper

pull/234/head
alestiago 3 years ago
parent df57b371d6
commit b250bd8e21

@ -5,7 +5,8 @@ import 'package:pinball_flame/pinball_flame.dart';
// TODO(alestiago): Evaluate if there is any useful documentation that could // TODO(alestiago): Evaluate if there is any useful documentation that could
// be added to this class. // be added to this class.
// ignore: public_member_api_docs // ignore: public_member_api_docs
class DashBumperBallContactBehavior extends ContactBehavior<DashNestBumper> { class DashNestBumperBallContactBehavior
extends ContactBehavior<DashNestBumper> {
@override @override
void beginContact(Object other, Contact contact) { void beginContact(Object other, Contact contact) {
super.beginContact(other, contact); super.beginContact(other, contact);

@ -33,7 +33,7 @@ class DashNestBumper extends BodyComponent with InitialPosition {
position: spritePosition, position: spritePosition,
current: bloc.state, current: bloc.state,
), ),
DashBumperBallContactBehavior(), DashNestBumperBallContactBehavior(),
...?children, ...?children,
], ],
renderBody: false, renderBody: false,

@ -22,3 +22,5 @@ class MockAlienBumperCubit extends Mock implements AlienBumperCubit {}
class MockGoogleLetterCubit extends Mock implements GoogleLetterCubit {} class MockGoogleLetterCubit extends Mock implements GoogleLetterCubit {}
class MockSparkyBumperCubit extends Mock implements SparkyBumperCubit {} class MockSparkyBumperCubit extends Mock implements SparkyBumperCubit {}
class MockDashNestBumperCubit extends Mock implements DashNestBumperCubit {}

@ -5,7 +5,7 @@ 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';
import 'package:pinball_components/pinball_components.dart'; import 'package:pinball_components/pinball_components.dart';
import 'package:pinball_components/src/components/alien_bumper/behaviors/alien_bumper_ball_contact_behavior.dart'; import 'package:pinball_components/src/components/alien_bumper/behaviors/behaviors.dart';
import '../../../../helpers/helpers.dart'; import '../../../../helpers/helpers.dart';

@ -0,0 +1,51 @@
// 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_components/pinball_components.dart';
import 'package:pinball_components/src/components/dash_nest_bumper/behaviors/behaviors.dart';
import '../../../../helpers/helpers.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
final flameTester = FlameTester(TestGame.new);
group(
'DashNestBumperBallContactBehavior',
() {
test('can be instantiated', () {
expect(
DashNestBumperBallContactBehavior(),
isA<DashNestBumperBallContactBehavior>(),
);
});
group(
'beginContact',
() {
flameTester.test('emits onBallContacted when contacts with a ball',
(game) async {
final behavior = DashNestBumperBallContactBehavior();
final bloc = MockDashNestBumperCubit();
whenListen(
bloc,
const Stream<DashNestBumperState>.empty(),
initialState: DashNestBumperState.active,
);
final alienBumper = DashNestBumper.test(bloc: bloc);
await alienBumper.add(behavior);
await game.ensureAdd(alienBumper);
behavior.beginContact(MockBall(), MockContact());
verify(alienBumper.bloc.onBallContacted).called(1);
});
},
);
},
);
}

@ -0,0 +1,24 @@
import 'package:bloc_test/bloc_test.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:pinball_components/pinball_components.dart';
void main() {
group(
'DashNestBumperCubit',
() {
blocTest<DashNestBumperCubit, DashNestBumperState>(
'onBallContacted emits active',
build: DashNestBumperCubit.new,
act: (bloc) => bloc.onBallContacted(),
expect: () => [DashNestBumperState.active],
);
blocTest<DashNestBumperCubit, DashNestBumperState>(
'onReset emits inactive',
build: DashNestBumperCubit.new,
act: (bloc) => bloc.onReset(),
expect: () => [DashNestBumperState.inactive],
);
},
);
}

@ -4,8 +4,9 @@ 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:pinball_components/pinball_components.dart'; import 'package:pinball_components/pinball_components.dart';
import 'package:pinball_components/src/components/dash_nest_bumper/behaviors/behaviors.dart';
import '../../helpers/helpers.dart'; import '../../../helpers/helpers.dart';
void main() { void main() {
TestWidgetsFlutterBinding.ensureInitialized(); TestWidgetsFlutterBinding.ensureInitialized();
@ -40,6 +41,7 @@ void main() {
expect(game.contains(bumper), isTrue); expect(game.contains(bumper), isTrue);
}); });
group('adds', () {
flameTester.test('adds new children', (game) async { flameTester.test('adds new children', (game) async {
final component = Component(); final component = Component();
final dashNestBumper = DashNestBumper.a( final dashNestBumper = DashNestBumper.a(
@ -48,5 +50,17 @@ void main() {
await game.ensureAdd(dashNestBumper); await game.ensureAdd(dashNestBumper);
expect(dashNestBumper.children, contains(component)); expect(dashNestBumper.children, contains(component));
}); });
flameTester.test('an DashNestBumperBallContactBehavior', (game) async {
final dashNestBumper = DashNestBumper.a();
await game.ensureAdd(dashNestBumper);
expect(
dashNestBumper.children
.whereType<DashNestBumperBallContactBehavior>()
.single,
isNotNull,
);
});
});
}); });
} }
Loading…
Cancel
Save