import React from 'react'
import { render, screen } from '@testing-library/react'
import '@testing-library/jest-dom'
import { UserProfileSummary } from '../../src/components/UserProfileSummary'
describe('UserProfileSummary', () => {
const mockProfile = {
id: 1,
name: '张明',
disabilityType: '肢体残疾',
disabilityLevel: '三级',
stats: {
thisMonthAttendance: 28,
totalAttendance: 156,
thisMonthSalary: 4800
}
}
it('应该渲染用户头像(姓名首字)', () => {
render()
expect(screen.getByText('张')).toBeInTheDocument()
})
it('应该渲染用户姓名', () => {
render()
expect(screen.getByText('张明')).toBeInTheDocument()
})
it('应该渲染残疾类型和等级', () => {
render()
expect(screen.getByText('肢体残疾 · 三级')).toBeInTheDocument()
})
it('应该渲染统计数据', () => {
render()
expect(screen.getByText('28')).toBeInTheDocument() // 本月出勤
expect(screen.getByText('156')).toBeInTheDocument() // 累计出勤
expect(screen.getByText('¥4,800')).toBeInTheDocument() // 本月薪资
})
it('应该渲染统计标签', () => {
render()
expect(screen.getByText('本月出勤')).toBeInTheDocument()
expect(screen.getByText('累计出勤')).toBeInTheDocument()
expect(screen.getByText('本月薪资')).toBeInTheDocument()
})
it('应该处理空姓名情况', () => {
const emptyNameProfile = { ...mockProfile, name: '' }
const { container } = render()
// 头像文字应该为空span,检查头像容器是否存在
const avatarContainer = container.querySelector('.w-16.h-16.rounded-full')
expect(avatarContainer).toBeInTheDocument()
})
})