| 1234567891011121314151617181920212223242526272829303132333435363738 |
- import assert from 'node:assert/strict'
- import { createPinia, setActivePinia } from 'pinia'
- import { useRuntimeStore } from '../../../src/modules/cockpit/stores/runtimeStore.js'
- import { useEventStore } from '../../../src/modules/cockpit/stores/eventStore.js'
- import { useOverviewStore } from '../../../src/modules/cockpit/stores/overviewStore.js'
- import { useDetailStore } from '../../../src/modules/cockpit/stores/detailStore.js'
- setActivePinia(createPinia())
- const runtime = useRuntimeStore()
- const events = useEventStore()
- const overview = useOverviewStore()
- const detail = useDetailStore()
- const calls = []
- events.loadPanels = async () => { calls.push('events') }
- overview.loadPanels = async () => { calls.push('overview') }
- detail.loadEquipmentAggregate = async (code) => { calls.push(code) }
- detail.selection = { level: 'equipment', deviceCode: 'EQ-1' }
- const frame = { serverUpdatedAt: '2026-10-09T12:00:00+08:00', scanIntervalMs: 60000, items: [{ code: 'WO-1', deviceCode: 'EQ-1', stateCode: 4 }] }
- assert.equal(runtime.ingestWorkOrders(frame), true)
- assert.deepEqual(calls, ['events', 'overview', 'EQ-1'])
- assert.equal(runtime.orderScanIntervalMs, 60000)
- assert.equal(runtime.ingestWorkOrders(frame), false)
- assert.equal(runtime.ingestWorkOrders({ ...frame, serverUpdatedAt: '2026-10-08T12:00:00+08:00' }), false)
- assert.equal(calls.length, 3)
- assert.equal(runtime.ingestWorkOrders({ ...frame, items: [{ code: 'WO-2', deviceCode: 'EQ-2' }] }), true)
- assert.deepEqual(calls.slice(3), ['events', 'overview'])
- assert.equal(detail.selection.deviceCode, 'EQ-1')
- assert.deepEqual(runtime.statusState.deviceStates, {})
- detail.setSection('equipmentAggregate', { state: 'success', data: { deviceCode: 'EQ-1', sections: {} } })
- detail.closeDetail()
- assert.equal(runtime.ingestWorkOrders({ ...frame, serverUpdatedAt: '2026-10-09T12:01:00+08:00' }), true)
- assert.equal(detail.sections.equipmentAggregate.loaded, false)
- detail.selection = { level: 'equipment', deviceCode: 'EQ-1' }
- const before = calls.length
- runtime.ingest({ deviceCode: 'EQ-1', status: 'ALARM', serverUpdatedAt: '2026-10-09T12:02:00+08:00', eventId: 'ALARM-1' })
- assert.deepEqual(calls.slice(before), ['events', 'overview', 'EQ-1'])
- runtime.reset()
- console.log('T16 real Pinia store routing passed: stale rejection, same-time different orders, affected detail only, device state isolation.')
|