- API 层: deviceReadings 日聚合查询 + OAuth 合作方 CRUD 接口 - 常量: 设备连接状态/连接类型/实时监控指标常量 - Hook: useVitalSSE — 复用全局 SSE 连接的 vital_update 事件 - 页面: RealtimeMonitor 实时体征监控台 (SSE + 告警排序) - 页面: OAuthClientList FHIR 合作方管理 (CRUD + Secret 重置) - 增强: DeviceManage 设备状态/固件/连接类型列 + 状态筛选 - 路由: 新增 3 个懒加载路由 - 测试: RealtimeMonitor + OAuthClientList 单元测试
38 lines
1.0 KiB
TypeScript
38 lines
1.0 KiB
TypeScript
import { describe, it, expect, vi } from 'vitest';
|
|
import { render, screen, waitFor } from '@testing-library/react';
|
|
import { BrowserRouter } from 'react-router-dom';
|
|
import RealtimeMonitor from './RealtimeMonitor';
|
|
|
|
vi.mock('../../api/health/alerts', () => ({
|
|
alertApi: {
|
|
list: vi.fn().mockResolvedValue({ data: [], total: 0 }),
|
|
},
|
|
}));
|
|
|
|
vi.mock('../../hooks/useVitalSSE', () => ({
|
|
useVitalSSE: vi.fn().mockReturnValue({
|
|
connected: true,
|
|
patientVitals: new Map(),
|
|
lastUpdate: null,
|
|
}),
|
|
}));
|
|
|
|
vi.mock('../../components/PageContainer', () => ({
|
|
PageContainer: ({ children, title, actions }: { children: React.ReactNode; title: string; actions?: React.ReactNode }) => (
|
|
<div><h1>{title}</h1>{actions}{children}</div>
|
|
),
|
|
}));
|
|
|
|
describe('RealtimeMonitor', () => {
|
|
it('renders page title', async () => {
|
|
render(
|
|
<BrowserRouter>
|
|
<RealtimeMonitor />
|
|
</BrowserRouter>,
|
|
);
|
|
await waitFor(() => {
|
|
expect(screen.getByText('实时体征监控')).toBeDefined();
|
|
});
|
|
});
|
|
});
|