59 lines
1.7 KiB
TypeScript
59 lines
1.7 KiB
TypeScript
import { fireEvent, render, screen } from '@testing-library/react'
|
|
|
|
import TaskReferenceFields from '@/components/upload/TaskReferenceFields'
|
|
|
|
describe('TaskReferenceFields', () => {
|
|
test('任务号与钉钉审批编号使用响应式双列布局', () => {
|
|
const { container } = render(
|
|
<TaskReferenceFields
|
|
idPrefix="task-reference"
|
|
taskNo=""
|
|
onTaskNoChange={jest.fn()}
|
|
dingtalkApprovalNo=""
|
|
onDingtalkApprovalNoChange={jest.fn()}
|
|
/>,
|
|
)
|
|
|
|
expect(container.firstChild).toHaveClass('grid-cols-1', 'md:grid-cols-2')
|
|
expect(screen.getByLabelText('任务号')).toBeInTheDocument()
|
|
expect(screen.getByLabelText('钉钉审批编号')).toBeInTheDocument()
|
|
})
|
|
|
|
test('任务号输入会统一转为大写', () => {
|
|
const onTaskNoChange = jest.fn()
|
|
|
|
render(
|
|
<TaskReferenceFields
|
|
idPrefix="task-reference"
|
|
taskNo=""
|
|
onTaskNoChange={onTaskNoChange}
|
|
dingtalkApprovalNo=""
|
|
onDingtalkApprovalNoChange={jest.fn()}
|
|
/>,
|
|
)
|
|
|
|
fireEvent.change(screen.getByLabelText('任务号'), {
|
|
target: { value: 'task202601030184' },
|
|
})
|
|
|
|
expect(onTaskNoChange).toHaveBeenCalledWith('TASK202601030184')
|
|
})
|
|
|
|
test('非法审批编号应显示紧邻输入框的错误状态', () => {
|
|
render(
|
|
<TaskReferenceFields
|
|
idPrefix="task-reference"
|
|
taskNo=""
|
|
onTaskNoChange={jest.fn()}
|
|
dingtalkApprovalNo="20250230123"
|
|
onDingtalkApprovalNoChange={jest.fn()}
|
|
/>,
|
|
)
|
|
|
|
const input = screen.getByLabelText('钉钉审批编号')
|
|
fireEvent.blur(input)
|
|
expect(input).toHaveAttribute('aria-invalid', 'true')
|
|
expect(screen.getByText('钉钉审批编号前8位不是有效日期')).toBeInTheDocument()
|
|
})
|
|
})
|