| 12345678910111213141516171819202122232425 |
- import assert from 'node:assert/strict'
- import { toMonitoringPoint } from '../../../src/modules/cockpit/domain/mapSummary.js'
- import { loadEnhancementDevices } from '../../../src/modules/cockpit/services/enhancementDevices.js'
- const point = toMonitoringPoint({ pointCode: 'no-list', pointName: '有真实设备的点', longitude: 110, latitude: 28 })
- const card = { code: 'D', longitude: 110, latitude: 28, coordinate: { renderable: true } }
- const missing = await loadEnhancementDevices({ phase: 'complete', objects: [point] }, { fetchPoint: async () => ({ state: 'success', data: { code: point.code, devices: [card] } }) })
- assert.equal(missing.rows.length, 1, '缺摘要编码清单不能把真实点详情设备全部丢弃')
- assert.equal(missing.partial, true, '仍须提示缺少快照设备清单,不能冒称完整')
- const explicit = await loadEnhancementDevices({ phase: 'complete', objects: [{ ...point, deviceCodesAvailable: true, deviceCodes: [] }] }, { fetchPoint: async () => ({ state: 'success', data: { code: point.code, devices: [card] } }) })
- assert.equal(explicit.rows.length, 0, '显式筛空清单不能被点详情绕过')
- let release
- const progress = []
- const loading = loadEnhancementDevices({ phase: 'complete', objects: [
- { kind: 'unassociated-equipment', code: 'standalone' },
- { kind: 'monitoring-point', code: 'fast', deviceCodes: ['fast-device'] },
- { kind: 'monitoring-point', code: 'slow', deviceCodes: [] },
- ] }, { onProgress: (state) => progress.push(state), fetchPoint: async (code) => code === 'fast'
- ? { state: 'success', data: { code, devices: [{ ...card, code: 'fast-device' }] } }
- : new Promise((resolve) => { release = () => resolve({ state: 'success', data: { code, devices: [] } }) }) })
- await Promise.resolve(); await Promise.resolve()
- assert.ok(progress.some((state) => state.rows.some((row) => row.code === 'standalone')))
- assert.ok(progress.some((state) => state.rows.some((row) => row.code === 'fast-device')), '慢点不应阻止先返回设备呈现')
- assert.ok(progress.every((state) => state.partial))
- release(); await loading
- console.log('PASS 缺失/显式空设备清单区别,独立和已返回设备渐进呈现,慢点不阻塞')
|