智慧水务管理系统 - 精河县供水工程综合管理平台

water_data_model_test.dart 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import 'package:flutter_test/flutter_test.dart';
  2. import 'package:water_management_system/models/water_data_model.dart';
  3. void main() {
  4. group('WaterDataModel', () {
  5. test('should create model with all fields', () {
  6. final model = WaterDataModel(
  7. deviceId: 'D001', deviceName: 'Test Station', area: 'East',
  8. pressure: 0.35, flowRate: 120.5, temperature: 22.0,
  9. status: 'normal', updateTime: DateTime(2026, 6, 17, 16, 0),
  10. batteryLevel: 95.0, location: '116.3,39.9',
  11. );
  12. expect(model.deviceId, 'D001');
  13. expect(model.pressure, 0.35);
  14. expect(model.status, 'normal');
  15. });
  16. test('fromJson should parse JSON correctly', () {
  17. final model = WaterDataModel.fromJson({
  18. 'device_id': 'D002', 'device_name': 'Station B', 'area': 'West',
  19. 'pressure': 0.42, 'flow_rate': 150.0, 'status': 'warning',
  20. 'update_time': '2026-06-17T15:30:00', 'battery_level': 78.0,
  21. });
  22. expect(model.deviceId, 'D002');
  23. expect(model.pressure, 0.42);
  24. expect(model.status, 'warning');
  25. });
  26. test('fromJson should handle missing fields', () {
  27. final model = WaterDataModel.fromJson({});
  28. expect(model.deviceId, '');
  29. expect(model.pressure, 0.0);
  30. expect(model.status, 'unknown');
  31. });
  32. test('toJson should serialize all fields', () {
  33. final model = WaterDataModel(
  34. deviceId: 'D003', deviceName: 'C', area: 'S',
  35. pressure: 0.28, flowRate: 85.0, temperature: 21.0,
  36. status: 'error', updateTime: DateTime(2026, 6, 17),
  37. batteryLevel: 45.0, location: '116.2',
  38. );
  39. final json = model.toJson();
  40. expect(json['device_id'], 'D003');
  41. expect(json['status'], 'error');
  42. });
  43. test('needsWarning should be true for warning/error', () {
  44. expect(WaterDataModel.fromJson({'status': 'warning'}).needsWarning, true);
  45. expect(WaterDataModel.fromJson({'status': 'error'}).needsWarning, true);
  46. expect(WaterDataModel.fromJson({'status': 'normal'}).needsWarning, false);
  47. });
  48. test('copyWith should update specified fields', () {
  49. final orig = WaterDataModel.fromJson({'device_id': '1', 'pressure': 0.35});
  50. final updated = orig.copyWith(pressure: 0.40);
  51. expect(updated.pressure, 0.40);
  52. expect(updated.deviceId, '1');
  53. });
  54. });
  55. }