import 'package:flutter_test/flutter_test.dart'; import 'package:motorcycle_dash/models/motorcycle_models.dart'; import 'package:motorcycle_dash/services/motorcycle/local_motorcycle_data_provider.dart'; import 'package:motorcycle_dash/services/motorcycle/motorcycle_repository.dart'; void main() { group('Motorcycle Repository & Data Providers', () { final repo = HybridMotorcycleRepository(localProvider: LocalMotorcycleDataProvider()); test('getYears returns valid list of years', () async { final years = await repo.getYears(); expect(years.isNotEmpty, isTrue); expect(years.first.year, greaterThanOrEqualTo(2024)); }); test('getMakes returns popular manufacturers', () async { final makes = await repo.getMakes(2024); expect(makes.isNotEmpty, isTrue); expect(makes.any((m) => m.name.toLowerCase().contains('yamaha')), isTrue); expect(makes.any((m) => m.name.toLowerCase().contains('kawasaki')), isTrue); }); test('getModels returns models for Yamaha', () async { final models = await repo.getModels(2024, 'yamaha'); expect(models.isNotEmpty, isTrue); expect(models.any((m) => m.name.contains('MT-09')), isTrue); }); test('getSpecifications fetches rich specs for Yamaha MT-09', () async { final selection = MotorcycleSelection( year: 2024, makeId: 'yamaha', makeName: 'Yamaha', modelId: 'mt-09', modelName: 'MT-09', ); final spec = await repo.getSpecifications(selection); expect(spec, isNotNull); expect(spec!.manufacturer, equals('Yamaha')); expect(spec.model, equals('MT-09')); expect(spec.displacementCc, equals(890)); expect(spec.horsepower, equals(117)); expect(spec.wetWeightLbs, equals(425)); }); test('MotorcycleSpecification serialization works', () { final spec = MotorcycleSpecification( year: 2024, manufacturer: 'Kawasaki', model: 'Ninja ZX-6R', displacementCc: 636, horsepower: 127, wetWeightLbs: 436, ); final jsonMap = spec.toJson(); final restored = MotorcycleSpecification.fromJson(jsonMap); expect(restored.manufacturer, equals('Kawasaki')); expect(restored.model, equals('Ninja ZX-6R')); expect(restored.displacementCc, equals(636)); expect(restored.horsepower, equals(127)); }); }); }