import assert from 'node:assert/strict' import test from 'node:test' import { buildMonitoringQuery, buildTrendQuery, formatMonitoringDateTime } from '../src/utils/waterSupplyMonitoringQuery.js' import { normalizeMonitoringRecord, readMonitoringExportError } from '../src/utils/waterSupplyModel.js' const query = { pageNum: 2, pageSize: 20, equipmentName: '测试流量点', equipmentCode: '', equipmentLocation: '测试大道', timeRange: [new Date(2026, 8, 1, 8, 30, 5), '2026-09-01 12:00:00'], flowMin: '20', flowMax: 40 } assert.deepEqual(buildMonitoringQuery(query, 'flowMin', 'flowMax'), { pageNum: 2, pageSize: 20, equipmentName: '测试流量点', equipmentLocation: '测试大道', startTime: '2026-09-01 08:30:05', endTime: '2026-09-01 12:00:00', flowMin: 20, flowMax: 40 }) assert.deepEqual(buildMonitoringQuery({}, 'pressureMin', 'pressureMax'), { pageNum: 1, pageSize: 10 }) assert.deepEqual(buildMonitoringQuery({ powerMin: 'not-number' }, 'powerMin', 'powerMax'), { pageNum: 1, pageSize: 10 }) assert.deepEqual(buildTrendQuery(['2026-09-01 08:00:00']), { startTime: '2026-09-01 08:00:00' }) assert.deepEqual(buildTrendQuery(), {}) assert.equal(formatMonitoringDateTime(new Date(2026, 8, 1, 8, 30, 5)), '2026-09-01 08:30:05') assert.equal(formatMonitoringDateTime(' '), undefined) const trendPoint = normalizeMonitoringRecord({ equipmentId: 'water-flow-device', equipmentName: '供水流量监测点', time: '2026-09-01 12:30:00', value: '25.5' }, 'flow', '流量监测') assert.equal(trendPoint.updateTime, '2026-09-01 12:30:00') assert.equal(trendPoint.value, 25.5) test('unmeasured water devices keep their identity and show a neutral monitoring empty state', () => { for (const [metric, sample] of [ ['flow', { equipmentId: 'flow-11', equipmentName: '测试流量计', instantFlow: null, monitorTime: null }], ['pressure', { equipmentId: 'pressure-12', equipmentName: '测试压力计', pressureValue: null, monitorTime: null }], ['power', { equipmentId: 'leak-13', equipmentName: '测试漏失监测01', power: null, monitorTime: null }] ]) { const row = normalizeMonitoringRecord(sample, metric) assert.equal(row.id, sample.equipmentId) assert.equal(row.equipmentName, sample.equipmentName) assert.equal(row.value, null) assert.equal(row.status, 'no-data') assert.equal(row.updateTime, '-') } }) const exportError = await readMonitoringExportError( new Blob(['{"code":500,"msg":"导出数据过多"}'], {type: 'application/json'}) ) const validExport = await readMonitoringExportError( new Blob(['xlsx'], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}) ) assert.equal(exportError, '导出数据过多') assert.equal(validExport, null) console.log('waterSupplyMonitoring tests passed')