93 lines
3.1 KiB
Dart
93 lines
3.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
import 'package:motorcycle_dash/features/records/records_service.dart';
|
|
import 'package:motorcycle_dash/features/dashboard/widgets/evolution_portrait_dashboard.dart';
|
|
import 'package:motorcycle_dash/features/records/records_screen.dart';
|
|
import 'package:motorcycle_dash/features/rides/ride_state_machine.dart';
|
|
|
|
void main() {
|
|
TestWidgetsFlutterBinding.ensureInitialized();
|
|
|
|
group('Evolution UI Widgets Rendering Tests', () {
|
|
testWidgets('EvolutionPortraitDashboard renders speedometer and HUD pods', (tester) async {
|
|
SharedPreferences.setMockInitialValues({});
|
|
final prefs = await SharedPreferences.getInstance();
|
|
|
|
await tester.pumpWidget(
|
|
ProviderScope(
|
|
overrides: [
|
|
sharedPreferencesProvider.overrideWithValue(prefs),
|
|
],
|
|
child: MaterialApp(
|
|
home: Scaffold(
|
|
body: EvolutionPortraitDashboard(
|
|
currentSpeedMph: 136.0,
|
|
heading: 355.0,
|
|
leanAngle: 48.0,
|
|
accelG: 0.98,
|
|
lateralG: 1.12,
|
|
session: RideSession(
|
|
state: RideState.idle,
|
|
tripDistanceMiles: 145.2,
|
|
topSpeedMph: 168.0,
|
|
averageSpeedMph: 87.0,
|
|
maxLeanLeft: 52.0,
|
|
maxLeanRight: 49.0,
|
|
startTime: null,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(find.text('136'), findsOneWidget);
|
|
expect(find.text('MPH'), findsOneWidget);
|
|
expect(find.text('NO GPS'), findsOneWidget);
|
|
expect(find.text('HEADSET'), findsNothing);
|
|
expect(find.text('BRAKING'), findsOneWidget);
|
|
expect(find.text('CORNERING'), findsOneWidget);
|
|
expect(find.text('LEAN ANGLE'), findsOneWidget);
|
|
expect(find.text('START SESSION'), findsOneWidget);
|
|
});
|
|
|
|
testWidgets('RecordsScreen renders speed records and performance times', (tester) async {
|
|
tester.view.physicalSize = const Size(1080, 2400);
|
|
tester.view.devicePixelRatio = 1.0;
|
|
addTearDown(() => tester.view.resetPhysicalSize());
|
|
|
|
SharedPreferences.setMockInitialValues({
|
|
'topSpeedMph': 164.0,
|
|
'fastest0To60': 2.9,
|
|
'fastest0To100': 6.4,
|
|
'maxLeanLeft': 48.0,
|
|
});
|
|
final prefs = await SharedPreferences.getInstance();
|
|
|
|
await tester.pumpWidget(
|
|
ProviderScope(
|
|
overrides: [
|
|
sharedPreferencesProvider.overrideWithValue(prefs),
|
|
],
|
|
child: const MaterialApp(
|
|
home: RecordsScreen(),
|
|
),
|
|
),
|
|
);
|
|
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(find.text('Personal Records'), findsOneWidget);
|
|
expect(find.text('TOP SPEED'), findsOneWidget);
|
|
expect(find.text('0-60'), findsOneWidget);
|
|
expect(find.text('0-100'), findsOneWidget);
|
|
expect(find.text('MAX LEAN LEFT'), findsOneWidget);
|
|
});
|
|
});
|
|
}
|
|
|