新增测试覆盖: - PatientDetail: 5 测试(渲染/标签页/数据展示) - AlertDashboard: 5 测试(渲染/统计卡片/告警列表) - AlertRuleList: 5 测试(渲染/规则表格/创建按钮) - DeviceManage: 5 测试(渲染/设备列表/筛选) - AiAnalysisList: 6 测试(渲染/分析记录/分页) - AiUsageDashboard: 4 测试(渲染/统计/类型分布) - ArticleManageList: 5 测试(渲染/文章表格/分类筛选) - PointsProductList: 5 测试(渲染/商品表格/上下架) - PointsRuleList: 4 测试(渲染/规则表格) - PointsOrderList: 5 测试(渲染/订单表格/状态筛选) - StatisticsDashboard: 2 测试(渲染/权限守卫) - DoctorSchedule: 3 测试(渲染/排班日历/科室筛选) 测试基础设施: - 8 个新 fixture 工厂(device/analysis/points/article/alert/schedule) - 10 组新 MSW handlers - 5 个新权限码(devices/dashboard/oauth/ai.usage) 前端测试:527/530 通过(3 个预存失败未受影响)
64 lines
1.9 KiB
TypeScript
64 lines
1.9 KiB
TypeScript
import { describe, it, expect, vi } from 'vitest';
|
|
import { screen, waitFor } from '@testing-library/react';
|
|
import { renderWithProviders } from '../../test/utils/renderWithProviders';
|
|
|
|
// Mock SSE hook
|
|
vi.mock('../../hooks/useAlertSSE', () => ({
|
|
useAlertSSE: () => ({ connected: false, connectionState: 'disconnected', recentAlerts: [], reconnect: vi.fn() }),
|
|
}));
|
|
|
|
// Mock useThemeMode
|
|
vi.mock('../../hooks/useThemeMode', () => ({
|
|
useThemeMode: () => false,
|
|
}));
|
|
|
|
import AlertDashboard from './AlertDashboard';
|
|
|
|
describe('AlertDashboard', () => {
|
|
it('renders the dashboard title', async () => {
|
|
vi.setConfig({ testTimeout: 15000 });
|
|
renderWithProviders(<AlertDashboard />);
|
|
|
|
await waitFor(() => {
|
|
expect(screen.getByText('告警仪表盘')).toBeInTheDocument();
|
|
});
|
|
});
|
|
|
|
it('shows statistics cards', async () => {
|
|
renderWithProviders(<AlertDashboard />);
|
|
|
|
await waitFor(() => {
|
|
expect(screen.getByText('待处理')).toBeInTheDocument();
|
|
});
|
|
expect(screen.getByText('已确认')).toBeInTheDocument();
|
|
expect(screen.getByText('危急值')).toBeInTheDocument();
|
|
});
|
|
|
|
it('shows alert list card', async () => {
|
|
renderWithProviders(<AlertDashboard />);
|
|
|
|
await waitFor(() => {
|
|
expect(screen.getByText('告警列表')).toBeInTheDocument();
|
|
});
|
|
});
|
|
|
|
it('shows SSE connection status indicator', async () => {
|
|
renderWithProviders(<AlertDashboard />);
|
|
|
|
await waitFor(() => {
|
|
expect(screen.getByText('连接断开')).toBeInTheDocument();
|
|
});
|
|
});
|
|
|
|
it('shows status filter dropdown', async () => {
|
|
renderWithProviders(<AlertDashboard />);
|
|
|
|
await waitFor(() => {
|
|
expect(screen.getByText('告警仪表盘')).toBeInTheDocument();
|
|
});
|
|
// The status filter Select should be present
|
|
const selects = document.querySelectorAll('.ant-select');
|
|
expect(selects.length).toBeGreaterThan(0);
|
|
});
|
|
});
|