test: test leaderboard page

pull/51/head
RuiAlonso 4 years ago
parent b79629725e
commit 90395a8c06

@ -30,7 +30,7 @@ class GameOverDialog extends StatelessWidget {
Text(l10n.gameOver), Text(l10n.gameOver),
TextButton( TextButton(
onPressed: () => Navigator.of(context).push<void>( onPressed: () => Navigator.of(context).push<void>(
LeaderBoardPage.route(theme), LeaderBoardPage.route(theme: theme),
), ),
child: Text(l10n.leadersBoard), child: Text(l10n.leadersBoard),
), ),

@ -11,7 +11,7 @@ class LeaderBoardPage extends StatelessWidget {
final PinballTheme theme; final PinballTheme theme;
static Route route(PinballTheme theme) { static Route route({required PinballTheme theme}) {
return MaterialPageRoute<void>( return MaterialPageRoute<void>(
builder: (_) => LeaderBoardPage(theme: theme), builder: (_) => LeaderBoardPage(theme: theme),
); );
@ -36,6 +36,7 @@ class LeaderBoardView extends StatelessWidget {
return Scaffold( return Scaffold(
body: Center( body: Center(
child: SingleChildScrollView(
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
@ -56,6 +57,7 @@ class LeaderBoardView extends StatelessWidget {
], ],
), ),
), ),
),
); );
} }
} }
@ -67,7 +69,6 @@ class _LeaderBoardView extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Padding( return Padding(
padding: const EdgeInsets.all(20), padding: const EdgeInsets.all(20),
child: SingleChildScrollView(
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: const [ children: const [
@ -75,7 +76,6 @@ class _LeaderBoardView extends StatelessWidget {
_LeaderBoardList(), _LeaderBoardList(),
], ],
), ),
),
); );
} }
} }

@ -103,10 +103,7 @@ void main() {
); );
await tester.pump(); await tester.pump();
expect( expect(find.byType(GameOverDialog), findsOneWidget);
find.text('Game Over'),
findsOneWidget,
);
}, },
); );

@ -0,0 +1,48 @@
// ignore_for_file: prefer_const_constructors
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockingjay/mockingjay.dart';
import 'package:pinball/game/game.dart';
import 'package:pinball/l10n/l10n.dart';
import 'package:pinball_theme/pinball_theme.dart';
import '../../../helpers/helpers.dart';
void main() {
group('GameOverDialog', () {
testWidgets('renders correctly', (tester) async {
final l10n = await AppLocalizations.delegate.load(Locale('en'));
await tester.pumpApp(
const GameOverDialog(
theme: PinballTheme(
characterTheme: DashTheme(),
),
),
);
expect(find.text(l10n.gameOver), findsOneWidget);
expect(find.text(l10n.leadersBoard), findsOneWidget);
});
testWidgets('tapping on leaderboard button navigates to LeaderBoardPage',
(tester) async {
final l10n = await AppLocalizations.delegate.load(Locale('en'));
final navigator = MockNavigator();
when(() => navigator.push<void>(any())).thenAnswer((_) async {});
await tester.pumpApp(
const GameOverDialog(
theme: PinballTheme(
characterTheme: DashTheme(),
),
),
navigator: navigator,
);
await tester.tap(find.widgetWithText(TextButton, l10n.leadersBoard));
verify(() => navigator.push<void>(any())).called(1);
});
});
}

@ -0,0 +1,90 @@
// ignore_for_file: prefer_const_constructors
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockingjay/mockingjay.dart';
import 'package:pinball/l10n/l10n.dart';
import 'package:pinball/leaderboard/view/leader_board_page.dart';
import 'package:pinball_theme/pinball_theme.dart';
import '../../helpers/helpers.dart';
void main() {
group('LeaderBoardPage', () {
testWidgets('renders LeaderBoardView', (tester) async {
final l10n = await AppLocalizations.delegate.load(Locale('en'));
await tester.pumpApp(
LeaderBoardPage(
theme: PinballTheme(
characterTheme: DashTheme(),
),
),
);
expect(find.byType(LeaderBoardView), findsOneWidget);
});
testWidgets('route returns a valid navigation route', (tester) async {
await tester.pumpApp(
Scaffold(
body: Builder(
builder: (context) {
return ElevatedButton(
onPressed: () {
Navigator.of(context).push<void>(
LeaderBoardPage.route(
theme: PinballTheme(
characterTheme: DashTheme(),
),
),
);
},
child: const Text('Tap me'),
);
},
),
),
);
await tester.tap(find.text('Tap me'));
await tester.pumpAndSettle();
expect(find.byType(LeaderBoardPage), findsOneWidget);
});
});
group('LeaderBoardView', () {
testWidgets('renders correctly', (tester) async {
final l10n = await AppLocalizations.delegate.load(Locale('en'));
await tester.pumpApp(
LeaderBoardPage(
theme: PinballTheme(
characterTheme: DashTheme(),
),
),
);
expect(find.text(l10n.leadersBoard), findsOneWidget);
expect(find.text(l10n.retry), findsOneWidget);
});
testWidgets('navigates to CharacterSelectionPage when retry is tapped',
(tester) async {
final navigator = MockNavigator();
when(() => navigator.push<void>(any())).thenAnswer((_) async {});
await tester.pumpApp(
LeaderBoardPage(
theme: PinballTheme(
characterTheme: DashTheme(),
),
),
navigator: navigator,
);
await tester.ensureVisible(find.byType(TextButton));
await tester.tap(find.byType(TextButton));
verify(() => navigator.push<void>(any())).called(1);
});
});
}
Loading…
Cancel
Save