blob: f6295668363ffa88c868112f61ddaf4de3cd9585 [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 'dart:math';
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/ui_kit/ui_kit.dart';
import 'package:webview_flutter_wkwebview/src/web_kit/web_kit.dart';
import '../common/test_web_kit.g.dart';
import 'ui_kit_test.mocks.dart';
@GenerateMocks(<Type>[
TestWKWebViewConfigurationHostApi,
TestWKWebViewHostApi,
TestUIScrollViewHostApi,
TestUIViewHostApi,
])
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
group('UIKit', () {
late InstanceManager instanceManager;
setUp(() {
instanceManager = InstanceManager(onWeakReferenceRemoved: (_) {});
});
group('UIScrollView', () {
late MockTestUIScrollViewHostApi mockPlatformHostApi;
late UIScrollView scrollView;
late int scrollViewInstanceId;
setUp(() {
mockPlatformHostApi = MockTestUIScrollViewHostApi();
TestUIScrollViewHostApi.setup(mockPlatformHostApi);
TestWKWebViewConfigurationHostApi.setup(
MockTestWKWebViewConfigurationHostApi(),
);
TestWKWebViewHostApi.setup(MockTestWKWebViewHostApi());
final WKWebView webView = WKWebView(
WKWebViewConfiguration(instanceManager: instanceManager),
instanceManager: instanceManager,
);
scrollView = UIScrollView.fromWebView(
webView,
instanceManager: instanceManager,
);
scrollViewInstanceId = instanceManager.getIdentifier(scrollView)!;
});
tearDown(() {
TestUIScrollViewHostApi.setup(null);
TestWKWebViewConfigurationHostApi.setup(null);
TestWKWebViewHostApi.setup(null);
});
test('getContentOffset', () async {
when(mockPlatformHostApi.getContentOffset(scrollViewInstanceId))
.thenReturn(<double>[4.0, 10.0]);
expect(
scrollView.getContentOffset(),
completion(const Point<double>(4.0, 10.0)),
);
});
test('scrollBy', () async {
await scrollView.scrollBy(const Point<double>(4.0, 10.0));
verify(mockPlatformHostApi.scrollBy(scrollViewInstanceId, 4.0, 10.0));
});
test('setContentOffset', () async {
await scrollView.setContentOffset(const Point<double>(4.0, 10.0));
verify(mockPlatformHostApi.setContentOffset(
scrollViewInstanceId,
4.0,
10.0,
));
});
});
group('UIView', () {
late MockTestUIViewHostApi mockPlatformHostApi;
late UIView view;
late int viewInstanceId;
setUp(() {
mockPlatformHostApi = MockTestUIViewHostApi();
TestUIViewHostApi.setup(mockPlatformHostApi);
view = UIView.detached(instanceManager: instanceManager);
viewInstanceId = instanceManager.addDartCreatedInstance(view);
});
tearDown(() {
TestUIViewHostApi.setup(null);
});
test('setBackgroundColor', () async {
await view.setBackgroundColor(Colors.red);
verify(mockPlatformHostApi.setBackgroundColor(
viewInstanceId,
Colors.red.value,
));
});
test('setOpaque', () async {
await view.setOpaque(false);
verify(mockPlatformHostApi.setOpaque(viewInstanceId, false));
});
});
});
}