test: fix tests and coverage

pull/359/head
RuiAlonso 3 years ago
parent 5a2e7dd48d
commit e08ecfc75f

@ -72,6 +72,8 @@ class _MockBackboxBloc extends Mock implements BackboxBloc {}
class _MockLeaderboardRepository extends Mock implements LeaderboardRepository { class _MockLeaderboardRepository extends Mock implements LeaderboardRepository {
} }
class _MockTapDownInfo extends Mock implements TapDownInfo {}
class _MockAppLocalizations extends Mock implements AppLocalizations { class _MockAppLocalizations extends Mock implements AppLocalizations {
@override @override
String get score => ''; String get score => '';
@ -236,6 +238,38 @@ void main() {
}, },
); );
flameTester.test(
'calls ScoreShareRequested when share on InfoDisplay',
(game) async {
final state = InitialsSuccessState(
score: 100,
initials: 'AAA',
character: theme.AndroidTheme(),
);
whenListen(
bloc,
Stream.value(state),
initialState: state,
);
final backbox = Backbox.test(bloc: bloc);
await game.pump(backbox);
final shareLink =
game.descendants().whereType<ShareLinkComponent>().first;
shareLink.onTapDown(_MockTapDownInfo());
verify(
() => bloc.add(
ScoreShareRequested(
score: state.score,
initials: state.initials,
character: state.character,
),
),
).called(1);
},
);
flameTester.test( flameTester.test(
'adds InitialsSubmissionFailureDisplay on InitialsFailureState', 'adds InitialsSubmissionFailureDisplay on InitialsFailureState',
(game) async { (game) async {

@ -1,6 +1,7 @@
// ignore_for_file: cascade_invocations // ignore_for_file: cascade_invocations
import 'package:flame/game.dart'; import 'package:flame/game.dart';
import 'package:flame/input.dart';
import 'package:flame_bloc/flame_bloc.dart'; import 'package:flame_bloc/flame_bloc.dart';
import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flame_test/flame_test.dart'; import 'package:flame_test/flame_test.dart';
@ -59,6 +60,8 @@ class _MockAppLocalizations extends Mock implements AppLocalizations {
String get firebaseOrOpenSource => ''; String get firebaseOrOpenSource => '';
} }
class _MockTapDownInfo extends Mock implements TapDownInfo {}
void main() { void main() {
TestWidgetsFlutterBinding.ensureInitialized(); TestWidgetsFlutterBinding.ensureInitialized();
@ -73,5 +76,45 @@ void main() {
expect(game.descendants(), contains(component)); expect(game.descendants(), contains(component));
}, },
); );
flameTester.testGameWidget(
'calls onShare when tap on Share link',
setUp: (game, tester) async {
var tapped = false;
final tapDownInfo = _MockTapDownInfo();
final component = InfoDisplay(
onShare: () => tapped = true,
);
await game.pump(component);
final shareLink =
component.descendants().whereType<ShareLinkComponent>().first;
shareLink.onTapDown(tapDownInfo);
expect(tapped, isTrue);
},
);
flameTester.testGameWidget(
'calls onNavigate when tap on Goto IO link',
setUp: (game, tester) async {
var tapped = false;
final tapDownInfo = _MockTapDownInfo();
final component = InfoDisplay(
onNavigate: () => tapped = true,
);
await game.pump(component);
final gotoLink =
component.descendants().whereType<GotoIOLinkComponent>().first;
gotoLink.onTapDown(tapDownInfo);
expect(tapped, isTrue);
},
);
}); });
} }

@ -140,6 +140,42 @@ void main() {
verify(() => player.play(PinballAudio.gameOverVoiceOver)).called(1); verify(() => player.play(PinballAudio.gameOverVoiceOver)).called(1);
}, },
); );
flameTester.test(
'removes Play button on start',
(game) async {
final player = _MockPinballPlayer();
final component = GameBlocStatusListener();
await game.pump([component], pinballPlayer: player);
component.onNewState(
const GameState.initial().copyWith(status: GameStatus.playing),
);
await game.ready();
expect(game.overlays.isActive(PinballGame.playButtonOverlay), false);
},
);
flameTester.test(
'removes Replay button on replay',
(game) async {
final player = _MockPinballPlayer();
final component = GameBlocStatusListener();
await game.pump([component], pinballPlayer: player);
component.onNewState(
const GameState.initial().copyWith(status: GameStatus.replaying),
);
expect(
game.overlays.isActive(PinballGame.replayButtonOverlay),
false,
);
},
);
}); });
}); });
} }

Loading…
Cancel
Save