blob: 99a885ccc179870d519aff80e9f31c66cbe9f6d3 [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.
import 'dart:ui';
import 'package:mockito/mockito.dart';
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:url_launcher_platform_interface/link.dart';
final MethodCodec _codec = const JSONMethodCodec();
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
PlatformMessageCallback oldHandler;
MethodCall lastCall;
setUp(() {
oldHandler = window.onPlatformMessage;
window.onPlatformMessage = (
String name,
ByteData data,
PlatformMessageResponseCallback callback,
) {
lastCall = _codec.decodeMethodCall(data);
callback(_codec.encodeSuccessEnvelope(true));
};
});
tearDown(() {
window.onPlatformMessage = oldHandler;
});
test('pushRouteNameToFramework() calls pushRoute when no Router', () async {
await pushRouteNameToFramework(CustomBuildContext(), '/foo/bar');
expect(
lastCall,
isMethodCall(
'pushRoute',
arguments: '/foo/bar',
),
);
});
test(
'pushRouteNameToFramework() calls pushRouteInformation when Router exists',
() async {
await pushRouteNameToFramework(
CustomBuildContext(),
'/foo/bar',
debugForceRouter: true,
);
expect(
lastCall,
isMethodCall(
'pushRouteInformation',
arguments: <dynamic, dynamic>{
'location': '/foo/bar',
'state': null,
},
),
);
},
);
}
class CustomBuildContext<T> extends Mock implements BuildContext {}