import 'package:flutter_test/flutter_test.dart'; import 'package:water_management_system/models/water_data_model.dart'; void main() { group('WaterDataModel', () { test('should create model with all fields', () { final model = WaterDataModel( deviceId: 'D001', deviceName: 'Test Station', area: 'East', pressure: 0.35, flowRate: 120.5, temperature: 22.0, status: 'normal', updateTime: DateTime(2026, 6, 17, 16, 0), batteryLevel: 95.0, location: '116.3,39.9', ); expect(model.deviceId, 'D001'); expect(model.pressure, 0.35); expect(model.status, 'normal'); }); test('fromJson should parse JSON correctly', () { final model = WaterDataModel.fromJson({ 'device_id': 'D002', 'device_name': 'Station B', 'area': 'West', 'pressure': 0.42, 'flow_rate': 150.0, 'status': 'warning', 'update_time': '2026-06-17T15:30:00', 'battery_level': 78.0, }); expect(model.deviceId, 'D002'); expect(model.pressure, 0.42); expect(model.status, 'warning'); }); test('fromJson should handle missing fields', () { final model = WaterDataModel.fromJson({}); expect(model.deviceId, ''); expect(model.pressure, 0.0); expect(model.status, 'unknown'); }); test('toJson should serialize all fields', () { final model = WaterDataModel( deviceId: 'D003', deviceName: 'C', area: 'S', pressure: 0.28, flowRate: 85.0, temperature: 21.0, status: 'error', updateTime: DateTime(2026, 6, 17), batteryLevel: 45.0, location: '116.2', ); final json = model.toJson(); expect(json['device_id'], 'D003'); expect(json['status'], 'error'); }); test('needsWarning should be true for warning/error', () { expect(WaterDataModel.fromJson({'status': 'warning'}).needsWarning, true); expect(WaterDataModel.fromJson({'status': 'error'}).needsWarning, true); expect(WaterDataModel.fromJson({'status': 'normal'}).needsWarning, false); }); test('copyWith should update specified fields', () { final orig = WaterDataModel.fromJson({'device_id': '1', 'pressure': 0.35}); final updated = orig.copyWith(pressure: 0.40); expect(updated.pressure, 0.40); expect(updated.deviceId, '1'); }); }); }