MotorSignal-App/test/garage_test.dart

67 lines
2.4 KiB
Dart

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));
});
});
}