blob: abed2ac4a7ba327326ae41a22af983560fb62168 [file] [log] [blame]
// 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.
import 'package:devtools_app/src/config_specific/ide_theme/ide_theme.dart';
import 'package:devtools_app/src/service/service_manager.dart';
import 'package:devtools_app/src/service/service_registrations.dart'
as registrations;
import 'package:devtools_app/src/shared/device_dialog.dart';
import 'package:devtools_app/src/shared/globals.dart';
import 'package:devtools_app/src/shared/version.dart';
import 'package:devtools_test/devtools_test.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
void main() {
late FakeServiceManager fakeServiceManager;
const windowSize = Size(2000.0, 1000.0);
group('DeviceDialog', () {
void initServiceManager({
bool flutterVersionServiceAvailable = true,
}) {
final availableServices = [
if (flutterVersionServiceAvailable)
registrations.flutterVersion.service,
];
fakeServiceManager = FakeServiceManager(
availableServices: availableServices,
);
when(fakeServiceManager.vm.version).thenReturn('1.9.1');
final app = fakeServiceManager.connectedApp!;
when(app.isDartWebAppNow).thenReturn(false);
when(app.isRunningOnDartVM).thenReturn(true);
setGlobal(ServiceConnectionManager, fakeServiceManager);
setGlobal(IdeTheme, IdeTheme());
}
DeviceDialog deviceDialog;
setUp(() {
initServiceManager();
});
testWidgetsWithWindowSize('builds dialog dart web', windowSize,
(WidgetTester tester) async {
final app = fakeServiceManager.connectedApp!;
when(app.isDartWebAppNow).thenReturn(true);
when(app.isRunningOnDartVM).thenReturn(false);
deviceDialog = DeviceDialog(
connectedApp: app,
// The parameter is required.
// ignore: avoid_redundant_argument_values
flutterVersion: null,
);
await tester.pumpWidget(wrap(deviceDialog));
expect(find.text('Device Info'), findsOneWidget);
expect(find.text('Dart Version: '), findsOneWidget);
expect(find.text('CPU / OS: '), findsOneWidget);
expect(find.text('Flutter Version: '), findsNothing);
expect(find.text('Framework / Engine: '), findsNothing);
expect(find.text('VM Service Connection: '), findsOneWidget);
});
testWidgetsWithWindowSize('builds dialog flutter', windowSize,
(WidgetTester tester) async {
final app = fakeServiceManager.connectedApp!;
when(app.isDartWebAppNow).thenReturn(false);
when(app.isRunningOnDartVM).thenReturn(true);
mockIsFlutterApp(fakeServiceManager.connectedApp!);
final flutterVersion =
FlutterVersion.parse((await fakeServiceManager.flutterVersion).json!);
deviceDialog = DeviceDialog(
connectedApp: app,
flutterVersion: flutterVersion,
);
await tester.pumpWidget(wrap(deviceDialog));
expect(find.text('Device Info'), findsOneWidget);
expect(find.text('Dart Version: '), findsOneWidget);
expect(find.text('CPU / OS: '), findsOneWidget);
expect(find.text('Flutter Version: '), findsOneWidget);
expect(find.text('Framework / Engine: '), findsOneWidget);
expect(find.text('VM Service Connection: '), findsOneWidget);
});
});
group('VMFlagsDialog', () {
void initServiceManager({
bool flutterVersionServiceAvailable = true,
}) {
final availableServices = [
if (flutterVersionServiceAvailable)
registrations.flutterVersion.service,
];
fakeServiceManager = FakeServiceManager(
availableServices: availableServices,
);
when(fakeServiceManager.vm.version).thenReturn('1.9.1');
final app = fakeServiceManager.connectedApp!;
when(app.isDartWebAppNow).thenReturn(false);
when(app.isRunningOnDartVM).thenReturn(true);
setGlobal(ServiceConnectionManager, fakeServiceManager);
}
late VMFlagsDialog vmFlagsDialog;
setUp(() {
initServiceManager();
vmFlagsDialog = VMFlagsDialog();
});
testWidgets('builds dialog', (WidgetTester tester) async {
final app = fakeServiceManager.connectedApp!;
when(app.isDartWebAppNow).thenReturn(false);
when(app.isRunningOnDartVM).thenReturn(true);
mockIsFlutterApp(fakeServiceManager.connectedApp!);
await tester.pumpWidget(wrap(vmFlagsDialog));
expect(find.text('VM Flags'), findsOneWidget);
expect(find.text('flag 1 name'), findsOneWidget);
final Text commentText = tester
.firstWidget<Text>(findSubstring(vmFlagsDialog, 'flag 1 comment'));
expect(commentText, isNotNull);
});
});
}