From ed54af0068f42ed13d8fa73ccb7e8c1e948a1e9a Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Sun, 8 May 2022 04:39:20 +0200 Subject: [PATCH] test: backbox tests --- lib/game/components/backbox/backbox.dart | 2 + .../game/components/backbox/backbox_test.dart | 86 ++++++++++--------- test/helpers/pump_app.dart | 7 ++ 3 files changed, 55 insertions(+), 40 deletions(-) diff --git a/lib/game/components/backbox/backbox.dart b/lib/game/components/backbox/backbox.dart index 946eda93..f0fe2511 100644 --- a/lib/game/components/backbox/backbox.dart +++ b/lib/game/components/backbox/backbox.dart @@ -94,6 +94,8 @@ class Backbox extends PositionComponent with ZIndex, HasGameRef { ), ); } else if (state is InitialsSuccessState) { + gameRef.overlays.remove(PinballGame.mobileControlsOverlay); + _display.add( GameOverInfoDisplay( onShare: () { diff --git a/test/game/components/backbox/backbox_test.dart b/test/game/components/backbox/backbox_test.dart index fa5e814e..40cb3cc0 100644 --- a/test/game/components/backbox/backbox_test.dart +++ b/test/game/components/backbox/backbox_test.dart @@ -163,6 +163,7 @@ void main() { late BackboxBloc bloc; late PlatformHelper platformHelper; + late UrlLauncherPlatform urlLauncher; setUp(() { bloc = _MockBackboxBloc(); @@ -295,7 +296,8 @@ void main() { ); flameTester.test( - 'adds the mobile controls overlay when platform is mobile', + 'adds the mobile controls overlay ' + 'when platform is mobile at InitialsFormState', (game) async { final bloc = _MockBackboxBloc(); final platformHelper = _MockPlatformHelper(); @@ -323,6 +325,33 @@ void main() { }, ); + flameTester.test( + 'remove the mobile controls overlay ' + 'when InitialsSuccessState', + (game) async { + final bloc = _MockBackboxBloc(); + final platformHelper = _MockPlatformHelper(); + final state = InitialsSuccessState(score: 10); + whenListen( + bloc, + Stream.empty(), + initialState: state, + ); + when(() => platformHelper.isMobile).thenReturn(true); + final backbox = Backbox.test( + bloc: bloc, + shareRepository: _MockShareRepository(), + platformHelper: platformHelper, + ); + await game.pump(backbox); + + expect( + game.overlays.value, + isNot(contains(PinballGame.mobileControlsOverlay)), + ); + }, + ); + flameTester.test( 'adds InitialsSubmissionSuccessDisplay on InitialsSuccessState', (game) async { @@ -403,15 +432,13 @@ void main() { ); group('ShareDisplay', () { - late UrlLauncherPlatform urlLauncher; - setUp(() async { urlLauncher = _MockUrlLauncher(); UrlLauncherPlatform.instance = urlLauncher; }); flameTester.test( - 'added on ShareState', + 'added ShareDisplay on ShareState', (game) async { final state = ShareState(score: 100); whenListen( @@ -436,10 +463,24 @@ void main() { flameTester.test( 'open Facebook link when sharing with Facebook', (game) async { + when(() => urlLauncher.canLaunch(any())) + .thenAnswer((_) async => true); + when( + () => urlLauncher.launch( + any(), + useSafariVC: any(named: 'useSafariVC'), + useWebView: any(named: 'useWebView'), + enableJavaScript: any(named: 'enableJavaScript'), + enableDomStorage: any(named: 'enableDomStorage'), + universalLinksOnly: any(named: 'universalLinksOnly'), + headers: any(named: 'headers'), + ), + ).thenAnswer((_) async => true); + final state = ShareState(score: 100); whenListen( bloc, - Stream.value(state), + const Stream.empty(), initialState: state, ); @@ -451,19 +492,6 @@ void main() { platform: SharePlatform.facebook, ), ).thenReturn(fakeUrl); - when(() => urlLauncher.canLaunch(any())) - .thenAnswer((_) async => true); - when( - () => urlLauncher.launch( - any(), - useSafariVC: any(named: 'useSafariVC'), - useWebView: any(named: 'useWebView'), - enableJavaScript: any(named: 'enableJavaScript'), - enableDomStorage: any(named: 'enableDomStorage'), - universalLinksOnly: any(named: 'universalLinksOnly'), - headers: any(named: 'headers'), - ), - ).thenAnswer((_) async => true); final backbox = Backbox.test( bloc: bloc, @@ -484,17 +512,6 @@ void main() { platform: SharePlatform.facebook, ), ).called(1); - verify( - () => urlLauncher.launch( - fakeUrl, - useSafariVC: any(named: 'useSafariVC'), - useWebView: any(named: 'useWebView'), - enableJavaScript: any(named: 'enableJavaScript'), - enableDomStorage: any(named: 'enableDomStorage'), - universalLinksOnly: any(named: 'universalLinksOnly'), - headers: any(named: 'headers'), - ), - ); }, ); @@ -549,17 +566,6 @@ void main() { platform: SharePlatform.twitter, ), ).called(1); - verify( - () => urlLauncher.launch( - fakeUrl, - useSafariVC: any(named: 'useSafariVC'), - useWebView: any(named: 'useWebView'), - enableJavaScript: any(named: 'enableJavaScript'), - enableDomStorage: any(named: 'enableDomStorage'), - universalLinksOnly: any(named: 'universalLinksOnly'), - headers: any(named: 'headers'), - ), - ); }, ); }); diff --git a/test/helpers/pump_app.dart b/test/helpers/pump_app.dart index 8be03f03..df75efae 100644 --- a/test/helpers/pump_app.dart +++ b/test/helpers/pump_app.dart @@ -12,12 +12,15 @@ import 'package:pinball/select_character/select_character.dart'; import 'package:pinball/start_game/start_game.dart'; import 'package:pinball_audio/pinball_audio.dart'; import 'package:pinball_ui/pinball_ui.dart'; +import 'package:share_repository/share_repository.dart'; class _MockAssetsManagerCubit extends Mock implements AssetsManagerCubit {} class _MockLeaderboardRepository extends Mock implements LeaderboardRepository { } +class _MockShareRepository extends Mock implements ShareRepository {} + class _MockCharacterThemeCubit extends Mock implements CharacterThemeCubit {} class _MockGameBloc extends Mock implements GameBloc {} @@ -55,6 +58,7 @@ extension PumpApp on WidgetTester { AssetsManagerCubit? assetsManagerCubit, CharacterThemeCubit? characterThemeCubit, LeaderboardRepository? leaderboardRepository, + ShareRepository? shareRepository, PinballAudioPlayer? pinballAudioPlayer, }) { return runAsync(() { @@ -64,6 +68,9 @@ extension PumpApp on WidgetTester { RepositoryProvider.value( value: leaderboardRepository ?? _MockLeaderboardRepository(), ), + RepositoryProvider.value( + value: shareRepository ?? _MockShareRepository(), + ), RepositoryProvider.value( value: pinballAudioPlayer ?? _buildDefaultPinballAudioPlayer(), ),