76 lines
2.7 KiB
Dart
76 lines
2.7 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:motorcycle_dash/services/map/map_provider_interface.dart';
|
|
import 'package:motorcycle_dash/services/map/map_providers.dart';
|
|
import 'package:motorcycle_dash/services/map/open_street_map_provider.dart';
|
|
import 'package:motorcycle_dash/services/map/google_map_provider.dart';
|
|
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
void main() {
|
|
TestWidgetsFlutterBinding.ensureInitialized();
|
|
|
|
setUp(() {
|
|
SharedPreferences.setMockInitialValues({});
|
|
});
|
|
|
|
group('Map Provider Architecture Tests', () {
|
|
test('AppLatLng equality and initialization', () {
|
|
const p1 = AppLatLng(37.7749, -122.4194);
|
|
const p2 = AppLatLng(37.7749, -122.4194);
|
|
const p3 = AppLatLng(34.0522, -118.2437);
|
|
|
|
expect(p1, equals(p2));
|
|
expect(p1, isNot(equals(p3)));
|
|
});
|
|
|
|
test('MapConfig defaults', () {
|
|
const config = MapConfig();
|
|
expect(config.tileUrlTemplate, anyOf(contains('cartocdn.com'), contains('openstreetmap.org')));
|
|
expect(config.attributionText, contains('OpenStreetMap'));
|
|
expect(config.userAgent, contains('MotorcycleDashboard'));
|
|
});
|
|
|
|
test('OpenStreetMapProvider instance properties', () {
|
|
final osmProvider = OpenStreetMapProvider();
|
|
expect(osmProvider.type, equals(AppMapType.openStreetMap));
|
|
expect(osmProvider.name, equals('OpenStreetMap'));
|
|
});
|
|
|
|
test('GoogleMapProvider instance properties', () {
|
|
final googleProvider = GoogleMapProvider();
|
|
expect(googleProvider.type, equals(AppMapType.googleMaps));
|
|
expect(googleProvider.name, equals('Google Maps'));
|
|
});
|
|
|
|
test('MapFollowNotifier state toggles', () {
|
|
final container = ProviderContainer();
|
|
addTearDown(container.dispose);
|
|
|
|
final notifier = container.read(mapFollowStateProvider.notifier);
|
|
|
|
expect(container.read(mapFollowStateProvider), isTrue);
|
|
|
|
notifier.userInteracted();
|
|
expect(container.read(mapFollowStateProvider), isFalse);
|
|
|
|
notifier.recenter();
|
|
expect(container.read(mapFollowStateProvider), isTrue);
|
|
});
|
|
|
|
test('ActiveMapProvider resolves correct instance', () {
|
|
final container = ProviderContainer();
|
|
addTearDown(container.dispose);
|
|
|
|
// Default is OpenStreetMap
|
|
final active = container.read(activeMapProvider);
|
|
expect(active.type, equals(AppMapType.openStreetMap));
|
|
|
|
// Switch to Google Maps
|
|
container.read(mapProviderTypeNotifierProvider.notifier).setMapProviderType(AppMapType.googleMaps);
|
|
final activeGoogle = container.read(activeMapProvider);
|
|
expect(activeGoogle.type, equals(AppMapType.googleMaps));
|
|
});
|
|
});
|
|
}
|