blob: 443e3a7163a96dd41986750fce8a39949a4e4138 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:webview_flutter_wkwebview/src/common/instance_manager.dart';
import 'package:webview_flutter_wkwebview/src/foundation/foundation.dart';
import 'package:webview_flutter_wkwebview/src/web_kit/web_kit.dart';
import 'package:webview_flutter_wkwebview/src/webkit_proxy.dart';
import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart';
import 'webkit_webview_widget_test.mocks.dart';
@GenerateMocks(<Type>[WKUIDelegate, WKWebViewConfiguration])
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
group('WebKitWebViewWidget', () {
testWidgets('build', (WidgetTester tester) async {
final InstanceManager testInstanceManager = InstanceManager(
onWeakReferenceRemoved: (_) {},
);
final WebKitWebViewController controller = WebKitWebViewController(
WebKitWebViewControllerCreationParams(
webKitProxy: WebKitProxy(createWebView: (
WKWebViewConfiguration configuration, {
void Function(
String keyPath,
NSObject object,
Map<NSKeyValueChangeKey, Object?> change,
)? observeValue,
InstanceManager? instanceManager,
}) {
final WKWebView webView = WKWebView.detached(
instanceManager: testInstanceManager,
);
testInstanceManager.addDartCreatedInstance(webView);
return webView;
}, createWebViewConfiguration: ({InstanceManager? instanceManager}) {
return MockWKWebViewConfiguration();
}, createUIDelegate: ({
dynamic onCreateWebView,
dynamic requestMediaCapturePermission,
InstanceManager? instanceManager,
}) {
final MockWKUIDelegate mockWKUIDelegate = MockWKUIDelegate();
when(mockWKUIDelegate.copy()).thenReturn(MockWKUIDelegate());
testInstanceManager.addDartCreatedInstance(mockWKUIDelegate);
return mockWKUIDelegate;
}),
),
);
final WebKitWebViewWidget widget = WebKitWebViewWidget(
WebKitWebViewWidgetCreationParams(
key: const Key('keyValue'),
controller: controller,
instanceManager: testInstanceManager,
),
);
await tester.pumpWidget(
Builder(builder: (BuildContext context) => widget.build(context)),
);
expect(find.byType(UiKitView), findsOneWidget);
expect(find.byKey(const Key('keyValue')), findsOneWidget);
});
});
}