feat: addressing PR comments

pull/9/head
Erick Zanardo 4 years ago
parent dba7761e01
commit ca989eac8d

@ -1,3 +1,4 @@
import 'package:flame/game.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:pinball/game/game.dart';
@ -21,3 +22,24 @@ class PinballGamePage extends StatelessWidget {
return const PinballGameView();
}
}
class PinballGameView extends StatelessWidget {
const PinballGameView({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return BlocListener<GameBloc, GameState>(
listener: (context, state) {
if (state.isGameOver) {
showDialog<void>(
context: context,
builder: (_) {
return const GameOverDialog();
},
);
}
},
child: GameWidget<PinballGame>(game: PinballGame()),
);
}
}

@ -1,25 +0,0 @@
import 'package:flame/game.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:pinball/game/game.dart';
class PinballGameView extends StatelessWidget {
const PinballGameView({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return BlocListener<GameBloc, GameState>(
listener: (context, state) {
if (state.isGameOver) {
showDialog<void>(
context: context,
builder: (_) {
return const GameOverDialog();
},
);
}
},
child: GameWidget<PinballGame>(game: PinballGame()),
);
}
}

@ -1,3 +1,2 @@
export 'pinball_game_page.dart';
export 'pinball_game_view.dart';
export 'widgets/widgets.dart';

@ -1,4 +1,5 @@
import 'package:bloc_test/bloc_test.dart';
import 'package:flame/game.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:pinball/game/game.dart';
@ -45,4 +46,42 @@ void main() {
expect(find.byType(PinballGamePage), findsOneWidget);
});
});
group('PinballGameView', () {
testWidgets('renders game', (tester) async {
final gameBloc = MockGameBloc();
whenListen(
gameBloc,
Stream.value(const GameState.initial()),
initialState: const GameState.initial(),
);
await tester.pumpApp(const PinballGameView(), gameBloc: gameBloc);
expect(
find.byWidgetPredicate((w) => w is GameWidget<PinballGame>),
findsOneWidget,
);
});
testWidgets(
'renders a game over dialog when the user has lost',
(tester) async {
final gameBloc = MockGameBloc();
const state = GameState(score: 0, balls: 0);
whenListen(
gameBloc,
Stream.value(state),
initialState: state,
);
await tester.pumpApp(const PinballGameView(), gameBloc: gameBloc);
await tester.pump();
expect(
find.text('Game Over'),
findsOneWidget,
);
},
);
});
}

@ -1,46 +0,0 @@
import 'package:bloc_test/bloc_test.dart';
import 'package:flame/game.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:pinball/game/game.dart';
import '../../helpers/helpers.dart';
void main() {
group('PinballGameView', () {
testWidgets('renders game', (tester) async {
final gameBloc = MockGameBloc();
whenListen(
gameBloc,
Stream.value(const GameState.initial()),
initialState: const GameState.initial(),
);
await tester.pumpApp(const PinballGameView(), gameBloc: gameBloc);
expect(
find.byWidgetPredicate((w) => w is GameWidget<PinballGame>),
findsOneWidget,
);
});
testWidgets(
'renders a game over dialog when the user has lost',
(tester) async {
final gameBloc = MockGameBloc();
const state = GameState(score: 0, balls: 0);
whenListen(
gameBloc,
Stream.value(state),
initialState: state,
);
await tester.pumpApp(const PinballGameView(), gameBloc: gameBloc);
await tester.pump();
expect(
find.text('Game Over'),
findsOneWidget,
);
},
);
});
}
Loading…
Cancel
Save