55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
import { describe, it, expect } from 'vitest'
|
||
import { splitAlerts } from '@/pages/index/splitAlerts'
|
||
import type { HomeAlarm } from '@/api/homeAlarm'
|
||
|
||
// 字段对齐 2026-09-23 实测响应(content/createTime;status 0-待处理 1-已忽略 2-已处理 3-自动处理)
|
||
const item = (over: Partial<HomeAlarm>): HomeAlarm => ({
|
||
alarmId: '1',
|
||
roomId: 'r1',
|
||
deviceId: 'd1',
|
||
deviceName: '1463937a07a5',
|
||
deviceAlias: '跌倒检测器 No.01',
|
||
content: '跌倒检测器 No.01发生确认跌倒',
|
||
alarmType: '1299830603847491584',
|
||
createTime: '2026-09-23 14:19:08',
|
||
status: 1,
|
||
...over
|
||
})
|
||
|
||
describe('splitAlerts', () => {
|
||
it('status=0 进入待处理组,其余进入消息组', () => {
|
||
const list = [
|
||
item({ alarmId: '1', status: 0 }),
|
||
item({ alarmId: '2', status: 1 }),
|
||
item({ alarmId: '3', status: 2 })
|
||
]
|
||
const { unhandled, messages } = splitAlerts(list)
|
||
expect(unhandled.map((i) => i.alarmId)).toEqual(['1'])
|
||
expect(messages.map((i) => i.alarmId)).toEqual(['2', '3'])
|
||
})
|
||
|
||
it('status 异常值(如 99)落入消息组不丢弃', () => {
|
||
const list = [item({ alarmId: '1', status: 99 })]
|
||
const { unhandled, messages } = splitAlerts(list)
|
||
expect(unhandled).toEqual([])
|
||
expect(messages.map((i) => i.alarmId)).toEqual(['1'])
|
||
})
|
||
|
||
it('空列表两组均为空', () => {
|
||
const { unhandled, messages } = splitAlerts([])
|
||
expect(unhandled).toEqual([])
|
||
expect(messages).toEqual([])
|
||
})
|
||
|
||
it('两组均保持原有相对顺序', () => {
|
||
const list = [
|
||
item({ alarmId: '3', status: 1 }),
|
||
item({ alarmId: '1', status: 0 }),
|
||
item({ alarmId: '2', status: 1 })
|
||
]
|
||
const { unhandled, messages } = splitAlerts(list)
|
||
expect(unhandled.map((i) => i.alarmId)).toEqual(['1'])
|
||
expect(messages.map((i) => i.alarmId)).toEqual(['3', '2'])
|
||
})
|
||
})
|