feat: launch url and test

pull/359/head
RuiAlonso 3 years ago
parent 6397441428
commit 28aa239914

@ -87,7 +87,10 @@ class Backbox extends PositionComponent with ZIndex {
), ),
); );
}, },
onNavigate: () => launchUrl(Uri.parse(ShareRepository.openSourceUrl)), onNavigate: () {
print("OPEN ${ShareRepository.openSourceUrl}");
openLink(ShareRepository.openSourceUrl);
},
), ),
); );
} else if (state is InitialsFailureState) { } else if (state is InitialsFailureState) {

@ -71,7 +71,7 @@ class GameOverInfoDisplay extends Component with HasGameRef {
@override @override
Future<void> onLoad() async { Future<void> onLoad() async {
await super.onLoad(); await super.onLoad();
gameRef.overlays.add(PinballGame.replayButtonOverlay); //gameRef.overlays.add(PinballGame.replayButtonOverlay);
} }
} }

@ -11,6 +11,7 @@ class ShareRepository {
final String _appUrl; final String _appUrl;
/// Url to the Github Open Source Pinball project.
static const openSourceUrl = 'https://github.com/VGVentures/pinball'; static const openSourceUrl = 'https://github.com/VGVentures/pinball';
/// Returns a url to share the [value] on the given [platform]. /// Returns a url to share the [value] on the given [platform].

@ -20,6 +20,9 @@ import 'package:pinball/l10n/l10n.dart';
import 'package:pinball_components/pinball_components.dart'; import 'package:pinball_components/pinball_components.dart';
import 'package:pinball_flame/pinball_flame.dart'; import 'package:pinball_flame/pinball_flame.dart';
import 'package:pinball_theme/pinball_theme.dart' as theme; import 'package:pinball_theme/pinball_theme.dart' as theme;
import 'package:pinball_ui/pinball_ui.dart';
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
import 'package:share_repository/share_repository.dart';
class _TestGame extends Forge2DGame class _TestGame extends Forge2DGame
with HasKeyboardHandlerComponents, HasTappables { with HasKeyboardHandlerComponents, HasTappables {
@ -74,6 +77,10 @@ class _MockLeaderboardRepository extends Mock implements LeaderboardRepository {
class _MockTapDownInfo extends Mock implements TapDownInfo {} class _MockTapDownInfo extends Mock implements TapDownInfo {}
class _MockUrlLauncher extends Mock
with MockPlatformInterfaceMixin
implements UrlLauncherPlatform {}
class _MockAppLocalizations extends Mock implements AppLocalizations { class _MockAppLocalizations extends Mock implements AppLocalizations {
@override @override
String get score => ''; String get score => '';
@ -228,8 +235,16 @@ void main() {
}, },
); );
group('GameOverInfoDisplay', () {
late UrlLauncherPlatform urlLauncher;
setUp(() async {
urlLauncher = _MockUrlLauncher();
UrlLauncherPlatform.instance = urlLauncher;
});
flameTester.test( flameTester.test(
'adds GameOverInfoDisplay on InitialsSuccessState', 'added on InitialsSuccessState',
(game) async { (game) async {
final state = InitialsSuccessState( final state = InitialsSuccessState(
score: 100, score: 100,
@ -252,7 +267,7 @@ void main() {
); );
flameTester.test( flameTester.test(
'adds ShareScoreRequested event when sharing on GameOverInfoDisplay', 'adds ShareScoreRequested event when sharing',
(game) async { (game) async {
final state = InitialsSuccessState( final state = InitialsSuccessState(
score: 100, score: 100,
@ -283,6 +298,57 @@ void main() {
}, },
); );
flameTester.test(
'open OpenSource url when navigating',
(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 = 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<GoogleIOLinkComponent>().first;
shareLink.onTapDown(_MockTapDownInfo());
await game.ready();
verify(
() => urlLauncher.launch(
ShareRepository.openSourceUrl,
useSafariVC: any(named: 'useSafariVC'),
useWebView: any(named: 'useWebView'),
enableJavaScript: any(named: 'enableJavaScript'),
enableDomStorage: any(named: 'enableDomStorage'),
universalLinksOnly: any(named: 'universalLinksOnly'),
headers: any(named: 'headers'),
),
);
},
);
});
flameTester.test( flameTester.test(
'adds InitialsSubmissionFailureDisplay on InitialsFailureState', 'adds InitialsSubmissionFailureDisplay on InitialsFailureState',
(game) async { (game) async {

@ -98,7 +98,7 @@ void main() {
); );
flameTester.testGameWidget( flameTester.testGameWidget(
'calls onNavigate when go to IO link is tapped', 'calls onNavigate when go to Google IO link is tapped',
setUp: (game, tester) async { setUp: (game, tester) async {
var tapped = false; var tapped = false;

Loading…
Cancel
Save