Files
ignis_app/test/home_config_test.dart
2026-05-12 11:27:01 +07:00

73 lines
1.9 KiB
Dart

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