// Copyright 2019 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. @TestOn('chrome') // Uses web-only Flutter SDK import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_web_plugins/flutter_web_plugins.dart'; class TestPlugin { static void registerWith(Registrar registrar) { final MethodChannel channel = MethodChannel( 'test_plugin', const StandardMethodCodec(), registrar.messenger, ); final TestPlugin testPlugin = TestPlugin(); channel.setMethodCallHandler(testPlugin.handleMethodCall); } static final List calledMethods = []; Future handleMethodCall(MethodCall call) async { calledMethods.add(call.method); } } void main() { group('Plugin Registry', () { setUp(() { TestWidgetsFlutterBinding.ensureInitialized(); webPluginRegistry.registerMessageHandler(); }); test('Can register a plugin', () { TestPlugin.calledMethods.clear(); final Registrar registrar = webPluginRegistry.registrarFor(TestPlugin); TestPlugin.registerWith(registrar); const MethodChannel frameworkChannel = MethodChannel('test_plugin', StandardMethodCodec()); frameworkChannel.invokeMethod('test1'); expect(TestPlugin.calledMethods, ['test1']); }); test('Throws when trying to send a platform message to the framework', () { expect(() => pluginBinaryMessenger.send('test', ByteData(0)), throwsFlutterError); }); test('Throws when trying to set a mock handler', () { expect( () => pluginBinaryMessenger.setMockMessageHandler( 'test', (ByteData data) async => ByteData(0)), throwsFlutterError); }); }); }