import 'package:flutter_test/flutter_test.dart'; import 'package:ignis_app/features/settings/models/geofence_system_state.dart'; import 'package:ignis_app/features/settings/providers/settings_providers.dart'; import 'package:ignis_app/features/settings/services/geofence_system_status_service.dart'; import 'package:ignis_app/providers/providers.dart'; import 'package:ignis_app/services/settings_service.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'test_support.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); test( 'geofence system status provider inspects current home prerequisites', () async { SharedPreferences.setMockInitialValues({ 'ignis_homes': '[{"id":"home-1","name":"Дом","url":"https://one.example","latitude":55.75,"longitude":37.61,"geofenceEnabled":true}]', 'ignis_current_home_id': 'home-1', }); final settingsService = SettingsService( credentialsStorage: InMemoryCredentialsStorage(), ); await settingsService.setHomeApiKey('home-1', 'key-1'); final fakeService = _RecordingGeofenceSystemStatusService( const GeofenceSystemState(GeofenceSystemIssue.ready), ); final container = createTestContainer( FakeIgnisApi(), settingsService: settingsService, extraOverrides: [ geofenceSystemStatusServiceProvider.overrideWithValue(fakeService), ], ); await container.read(currentHomeProvider.notifier).load(); final state = await container.read(geofenceSystemStatusProvider.future); expect(state.issue, GeofenceSystemIssue.ready); expect(fakeService.lastHasActiveHome, isTrue); expect(fakeService.lastHasCoordinates, isTrue); }, ); } class _RecordingGeofenceSystemStatusService implements GeofenceSystemStatusService { final GeofenceSystemState result; _RecordingGeofenceSystemStatusService(this.result); bool? lastHasActiveHome; bool? lastHasCoordinates; @override Future inspect({ required bool hasActiveHome, required bool hasCoordinates, }) async { lastHasActiveHome = hasActiveHome; lastHasCoordinates = hasCoordinates; return result; } }