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