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 => ({ 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']) }) })