import 'package:flutter_test/flutter_test.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:travel_mate/models/transport_segment.dart'; import 'package:travel_mate/services/transport_service.dart'; void main() { const tripId = 'trip-transport-1'; late TransportService service; setUp(() { SharedPreferences.setMockInitialValues({}); service = TransportService(); }); test('adds and loads a segment', () async { final seg = TransportSegment.newSegment( id: 'seg1', type: 'flight', carrier: 'AF', number: '763', departureCode: 'CDG', arrivalCode: 'JFK', departureUtc: DateTime.utc(2026, 4, 10, 7, 0), arrivalUtc: DateTime.utc(2026, 4, 10, 11, 0), pnr: 'ABC123', ); await service.addSegment(tripId, seg); final loaded = await service.loadSegments(tripId); expect(loaded, hasLength(1)); expect(loaded.first.number, '763'); expect(loaded.first.status, 'scheduled'); }); test('updates status', () async { final seg = TransportSegment.newSegment( id: 'seg1', type: 'train', carrier: 'TGV', number: '8401', departureCode: 'PAR', arrivalCode: 'BRU', departureUtc: DateTime.utc(2026, 5, 1, 8, 30), arrivalUtc: DateTime.utc(2026, 5, 1, 10, 30), ); await service.addSegment(tripId, seg); final updated = await service.updateStatus(tripId, 'seg1', 'delayed'); expect(updated.first.status, 'delayed'); }); test('deletes segment and handles corrupted payload', () async { final seg = TransportSegment.newSegment( id: 'seg1', type: 'bus', carrier: 'FLX', number: '12', departureCode: 'AMS', arrivalCode: 'BRU', departureUtc: DateTime.utc(2026, 6, 1, 9, 0), arrivalUtc: DateTime.utc(2026, 6, 1, 11, 30), ); await service.addSegment(tripId, seg); await service.deleteSegment(tripId, 'seg1'); final prefs = await SharedPreferences.getInstance(); await prefs.setString('trip_transport_$tripId', 'bad-json'); final loaded = await service.loadSegments(tripId); expect(loaded, isEmpty); expect(prefs.getString('trip_transport_$tripId'), isNull); }); }