blob: 03bb7747a04848cb6e818705d5da528ad9d04aee [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_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/common/web_kit.pigeon.dart';
import 'package:webview_flutter_wkwebview/src/foundation/foundation.dart';
import '../common/test_web_kit.pigeon.dart';
import 'foundation_test.mocks.dart';
@GenerateMocks(<Type>[
TestNSObjectHostApi,
])
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
group('Foundation', () {
late InstanceManager instanceManager;
setUp(() {
instanceManager = InstanceManager();
});
group('NSObject', () {
late MockTestNSObjectHostApi mockPlatformHostApi;
late NSObject object;
setUp(() {
mockPlatformHostApi = MockTestNSObjectHostApi();
TestNSObjectHostApi.setup(mockPlatformHostApi);
object = NSObject(instanceManager: instanceManager);
instanceManager.addDartCreatedInstance(object);
});
tearDown(() {
TestNSObjectHostApi.setup(null);
});
test('addObserver', () async {
final NSObject observer = NSObject(instanceManager: instanceManager);
instanceManager.addDartCreatedInstance(observer);
await object.addObserver(
observer,
keyPath: 'aKeyPath',
options: <NSKeyValueObservingOptions>{
NSKeyValueObservingOptions.initialValue,
NSKeyValueObservingOptions.priorNotification,
},
);
final List<NSKeyValueObservingOptionsEnumData?> optionsData =
verify(mockPlatformHostApi.addObserver(
instanceManager.getIdentifier(object),
instanceManager.getIdentifier(observer),
'aKeyPath',
captureAny,
)).captured.single as List<NSKeyValueObservingOptionsEnumData?>;
expect(optionsData, hasLength(2));
expect(
optionsData[0]!.value,
NSKeyValueObservingOptionsEnum.initialValue,
);
expect(
optionsData[1]!.value,
NSKeyValueObservingOptionsEnum.priorNotification,
);
});
test('removeObserver', () async {
final NSObject observer = NSObject(instanceManager: instanceManager);
instanceManager.addDartCreatedInstance(observer);
await object.removeObserver(observer, keyPath: 'aKeyPath');
verify(mockPlatformHostApi.removeObserver(
instanceManager.getIdentifier(object),
instanceManager.getIdentifier(observer),
'aKeyPath',
));
});
test('dispose', () async {
final int instanceId = instanceManager.getIdentifier(object)!;
await object.dispose();
verify(
mockPlatformHostApi.dispose(instanceId),
);
});
});
});
}