xworkmate-app/test/test_support.dart
2026-03-16 17:58:37 +08:00

46 lines
1.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:xworkmate/app/app_controller.dart';
import 'package:xworkmate/theme/app_theme.dart';
import 'package:xworkmate/runtime/desktop_platform_service.dart';
Future<AppController> createTestController(
WidgetTester tester, {
DesktopPlatformService? desktopPlatformService,
}) async {
SharedPreferences.setMockInitialValues(<String, Object>{});
final controller = AppController(
desktopPlatformService: desktopPlatformService,
);
addTearDown(controller.dispose);
await tester.pump(const Duration(milliseconds: 100));
await tester.pumpAndSettle();
return controller;
}
Future<void> pumpPage(
WidgetTester tester, {
required Widget child,
Size size = const Size(1600, 1000),
}) async {
tester.view.devicePixelRatio = 1;
tester.view.physicalSize = size;
addTearDown(() {
tester.view.resetPhysicalSize();
tester.view.resetDevicePixelRatio();
});
await tester.pumpWidget(
MaterialApp(
locale: const Locale('zh'),
supportedLocales: const [Locale('zh'), Locale('en')],
localizationsDelegates: GlobalMaterialLocalizations.delegates,
theme: AppTheme.light(),
darkTheme: AppTheme.dark(),
home: Scaffold(body: child),
),
);
await tester.pumpAndSettle();
}