import 'package:flutter_test/flutter_test.dart'; import 'package:ignis_app/models/home_config.dart'; void main() { test('home config persists geofence radius in json', () { final home = HomeConfig( id: 'home-1', name: 'Home 1', url: 'https://one.example', latitude: 55.75, longitude: 37.61, geofenceEnabled: true, geofenceRadiusMeters: 900, ); final decoded = HomeConfig.fromJson(home.toJson()); expect(decoded.geofenceEnabled, isTrue); expect(decoded.geofenceRadiusMeters, 900); expect(decoded.latitude, 55.75); expect(decoded.longitude, 37.61); }); test( 'home config clamps geofence radius from legacy or invalid payloads', () { final tooSmall = HomeConfig.fromJson({ 'id': 'home-1', 'name': 'Home 1', 'url': 'https://one.example', 'geofenceRadiusMeters': 50, }); final tooLarge = HomeConfig.fromJson({ 'id': 'home-1', 'name': 'Home 1', 'url': 'https://one.example', 'geofenceRadiusMeters': 9000, }); final missing = HomeConfig.fromJson({ 'id': 'home-1', 'name': 'Home 1', 'url': 'https://one.example', }); expect(tooSmall.geofenceRadiusMeters, 100); expect(tooLarge.geofenceRadiusMeters, 5000); expect( missing.geofenceRadiusMeters, HomeConfig.defaultGeofenceRadiusMeters, ); }, ); test('clearing coordinates also disables geofence', () { final home = HomeConfig( id: 'home-1', name: 'Home 1', url: 'https://one.example', latitude: 55.75, longitude: 37.61, geofenceEnabled: true, geofenceRadiusMeters: 700, ); final cleared = home.copyWith(clearCoordinates: true); expect(cleared.latitude, isNull); expect(cleared.longitude, isNull); expect(cleared.geofenceEnabled, isFalse); expect(cleared.geofenceRadiusMeters, 700); }); }