blob: a890be7f65f1f703f92c22f8a2494d007a57c56b [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// TODO(egarciad): Remove once mockito is migrated to null safety.
// @dart = 2.9
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/material.dart';
import 'package:mockito/mockito.dart';
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart';
import 'package:url_launcher_example/main.dart';
void main() {
final MockUrlLauncher mock = MockUrlLauncher();
UrlLauncherPlatform.instance = mock;
testWidgets('Can open URLs', (WidgetTester tester) async {
await tester.pumpWidget(MyApp());
const String defaultUrl = 'https://www.cylog.org/headers/';
when(mock.canLaunch(defaultUrl)).thenAnswer((_) => Future.value(true));
const Map<String, String> defaultHeaders = {
'my_header_key': 'my_header_value'
};
verifyNever(mock.launch(defaultUrl,
useSafariVC: false,
useWebView: false,
enableDomStorage: false,
enableJavaScript: false,
universalLinksOnly: false,
headers: defaultHeaders));
Finder browserlaunchBtn =
find.widgetWithText(ElevatedButton, 'Launch in browser');
expect(browserlaunchBtn, findsOneWidget);
await tester.tap(browserlaunchBtn);
verify(mock.launch(defaultUrl,
useSafariVC: false,
useWebView: false,
enableDomStorage: false,
enableJavaScript: false,
universalLinksOnly: false,
headers: defaultHeaders))
.called(1);
});
}
class MockUrlLauncher extends Mock
with MockPlatformInterfaceMixin
implements UrlLauncherPlatform {}