import 'package:flutter_test/flutter_test.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:mileograph_flutter/components/pages/trips.dart'; import 'package:mileograph_flutter/services/distance_unit_service.dart'; import '../helpers/fake_services.dart'; import '../helpers/test_app.dart'; import '../helpers/test_data.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); setUpAll(() { SharedPreferences.setMockInitialValues({}); }); testWidgets('Trips page shows trip details', (tester) async { final data = FakeDataService() ..tripDetailsValue = TestData.tripDetails ..tripListValue = TestData.tripSummaries; final auth = FakeAuthService(api: FakeApiService()); final distanceUnits = FakeDistanceUnitService( unitOverride: DistanceUnit.milesDecimal, ); await tester.pumpWidget( buildTestApp( child: const TripsPage(), dataService: data, authService: auth, distanceUnitService: distanceUnits, ), ); await tester.pumpAndSettle(); expect(find.text('Trips'), findsOneWidget); expect(find.text('North Run'), findsOneWidget); expect(find.textContaining('mi'), findsWidgets); }); testWidgets('Trips page shows empty state', (tester) async { final data = FakeDataService() ..tripDetailsValue = [] ..tripListValue = [] ..isTripDetailsLoadingValue = false; final auth = FakeAuthService(api: FakeApiService()); await tester.pumpWidget( buildTestApp( child: const TripsPage(), dataService: data, authService: auth, ), ); await tester.pumpAndSettle(); expect(find.text('No trips yet'), findsOneWidget); expect( find.text('Use the Add entry flow to start grouping legs into trips.'), findsOneWidget, ); }); }