waterSupplyMonitoring.test.mjs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import assert from 'node:assert/strict'
  2. import test from 'node:test'
  3. import {
  4. buildMonitoringQuery,
  5. buildTrendQuery,
  6. formatMonitoringDateTime
  7. } from '../src/utils/waterSupplyMonitoringQuery.js'
  8. import {
  9. normalizeMonitoringRecord,
  10. readMonitoringExportError
  11. } from '../src/utils/waterSupplyModel.js'
  12. const query = {
  13. pageNum: 2,
  14. pageSize: 20,
  15. equipmentName: '测试流量点',
  16. equipmentCode: '',
  17. equipmentLocation: '测试大道',
  18. timeRange: [new Date(2026, 8, 1, 8, 30, 5), '2026-09-01 12:00:00'],
  19. flowMin: '20',
  20. flowMax: 40
  21. }
  22. assert.deepEqual(buildMonitoringQuery(query, 'flowMin', 'flowMax'), {
  23. pageNum: 2,
  24. pageSize: 20,
  25. equipmentName: '测试流量点',
  26. equipmentLocation: '测试大道',
  27. startTime: '2026-09-01 08:30:05',
  28. endTime: '2026-09-01 12:00:00',
  29. flowMin: 20,
  30. flowMax: 40
  31. })
  32. assert.deepEqual(buildMonitoringQuery({}, 'pressureMin', 'pressureMax'), {
  33. pageNum: 1,
  34. pageSize: 10
  35. })
  36. assert.deepEqual(buildMonitoringQuery({ powerMin: 'not-number' }, 'powerMin', 'powerMax'), {
  37. pageNum: 1,
  38. pageSize: 10
  39. })
  40. assert.deepEqual(buildTrendQuery(['2026-09-01 08:00:00']), {
  41. startTime: '2026-09-01 08:00:00'
  42. })
  43. assert.deepEqual(buildTrendQuery(), {})
  44. assert.equal(formatMonitoringDateTime(new Date(2026, 8, 1, 8, 30, 5)), '2026-09-01 08:30:05')
  45. assert.equal(formatMonitoringDateTime(' '), undefined)
  46. const trendPoint = normalizeMonitoringRecord({
  47. equipmentId: 'water-flow-device',
  48. equipmentName: '供水流量监测点',
  49. time: '2026-09-01 12:30:00',
  50. value: '25.5'
  51. }, 'flow', '流量监测')
  52. assert.equal(trendPoint.updateTime, '2026-09-01 12:30:00')
  53. assert.equal(trendPoint.value, 25.5)
  54. test('unmeasured water devices keep their identity and show a neutral monitoring empty state', () => {
  55. for (const [metric, sample] of [
  56. ['flow', { equipmentId: 'flow-11', equipmentName: '测试流量计', instantFlow: null, monitorTime: null }],
  57. ['pressure', { equipmentId: 'pressure-12', equipmentName: '测试压力计', pressureValue: null, monitorTime: null }],
  58. ['power', { equipmentId: 'leak-13', equipmentName: '测试漏失监测01', power: null, monitorTime: null }]
  59. ]) {
  60. const row = normalizeMonitoringRecord(sample, metric)
  61. assert.equal(row.id, sample.equipmentId)
  62. assert.equal(row.equipmentName, sample.equipmentName)
  63. assert.equal(row.value, null)
  64. assert.equal(row.status, 'no-data')
  65. assert.equal(row.updateTime, '-')
  66. }
  67. })
  68. const exportError = await readMonitoringExportError(
  69. new Blob(['{"code":500,"msg":"导出数据过多"}'], {type: 'application/json'})
  70. )
  71. const validExport = await readMonitoringExportError(
  72. new Blob(['xlsx'], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'})
  73. )
  74. assert.equal(exportError, '导出数据过多')
  75. assert.equal(validExport, null)
  76. console.log('waterSupplyMonitoring tests passed')