- API 层: deviceReadings 日聚合查询 + OAuth 合作方 CRUD 接口 - 常量: 设备连接状态/连接类型/实时监控指标常量 - Hook: useVitalSSE — 复用全局 SSE 连接的 vital_update 事件 - 页面: RealtimeMonitor 实时体征监控台 (SSE + 告警排序) - 页面: OAuthClientList FHIR 合作方管理 (CRUD + Secret 重置) - 增强: DeviceManage 设备状态/固件/连接类型列 + 状态筛选 - 路由: 新增 3 个懒加载路由 - 测试: RealtimeMonitor + OAuthClientList 单元测试
37 lines
1.0 KiB
TypeScript
37 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 OAuthClientList from './OAuthClientList';
|
|
|
|
vi.mock('../../api/health/oauthClients', () => ({
|
|
oauthClientApi: {
|
|
list: vi.fn().mockResolvedValue([]),
|
|
create: vi.fn(),
|
|
update: vi.fn(),
|
|
delete: vi.fn(),
|
|
regenerateSecret: vi.fn(),
|
|
},
|
|
FHIR_SCOPE_OPTIONS: [
|
|
{ value: 'Patient.read', label: 'Patient.read' },
|
|
],
|
|
}));
|
|
|
|
vi.mock('../../components/PageContainer', () => ({
|
|
PageContainer: ({ children, title, actions }: { children: React.ReactNode; title: string; actions?: React.ReactNode }) => (
|
|
<div><h1>{title}</h1>{actions}{children}</div>
|
|
),
|
|
}));
|
|
|
|
describe('OAuthClientList', () => {
|
|
it('renders page title', async () => {
|
|
render(
|
|
<BrowserRouter>
|
|
<OAuthClientList />
|
|
</BrowserRouter>,
|
|
);
|
|
await waitFor(() => {
|
|
expect(screen.getByText('FHIR API 合作方管理')).toBeDefined();
|
|
});
|
|
});
|
|
});
|