Files
ai-ticket-platform/frontend/src/features/workbench/WorkbenchPage.test.tsx
2026-07-27 19:00:35 +08:00

77 lines
2.2 KiB
TypeScript

import * as React from 'react'
import { cleanup, render, screen } from '@testing-library/react'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { WorkbenchPage } from './WorkbenchPage'
const mocks = vi.hoisted(() => ({
listTickets: vi.fn(),
listWorkItems: vi.fn(),
getWorkItemMetrics: vi.fn()
}))
vi.mock('@/features/agent-workspace/AgentWorkspaceProvider', () => ({
useAgentPageContext: vi.fn()
}))
vi.mock('@/features/tickets/api', () => ({
listTickets: mocks.listTickets
}))
vi.mock('@/features/workitems/api', () => ({
listWorkItems: mocks.listWorkItems,
getWorkItemMetrics: mocks.getWorkItemMetrics
}))
afterEach(() => {
cleanup()
vi.clearAllMocks()
})
describe('WorkbenchPage 任务 SLA', () => {
it('展示任务类型、截止状态和 SLA 汇总', async () => {
mocks.listTickets.mockResolvedValue({
items: [],
page: 1,
page_size: 20,
total: 0,
total_pages: 0
})
mocks.listWorkItems.mockResolvedValue([
{
public_id: '018f6f5e-b407-7fc2-9c56-2f34e6e1c111',
task_type: 'support_analysis_failed',
status: 'active',
object_type: 'ticket',
object_id: '7',
ticket_id: 7,
ticket_no: 'TK-0007',
title: '接管支持分析',
description: '需要人工处理',
payload: { error_message: '模型调用失败' },
assignee_id: 3,
created_at: '2026-07-27T08:00:00Z',
updated_at: '2026-07-27T08:00:00Z',
completed_at: null,
due_at: '2026-07-27T12:00:00Z',
sla_status: 'overdue'
}
])
mocks.getWorkItemMetrics.mockResolvedValue({
active_count: 3,
overdue_count: 1,
due_soon_count: 1,
completed_within_sla_count: 5,
completed_overdue_count: 2,
by_task_type: { support_analysis_failed: 1 }
})
render(<WorkbenchPage />)
expect(await screen.findByText('分析接管')).toBeInTheDocument()
expect(screen.getByText('模型调用失败')).toBeInTheDocument()
expect(screen.getAllByText('已超时')).toHaveLength(1)
expect(screen.getByText('活动 3')).toBeInTheDocument()
expect(screen.getByText('即将超时 1')).toBeInTheDocument()
expect(screen.getByText('已超时 1')).toBeInTheDocument()
})
})