/**
* PersonalBasicInfo 组件测试
*/
import React from 'react'
import { render, screen } from '@testing-library/react'
import '@testing-library/jest-dom'
import PersonalBasicInfo, { PersonalInfoResponse } from '../../../src/components/PersonalBasicInfo'
import { maskIdCard } from '../../../src/utils/maskUtils'
describe('PersonalBasicInfo', () => {
const mockPersonalInfo: PersonalInfoResponse = {
name: '张三',
gender: '男',
idCard: '110101199001011234',
disabilityId: 'D1234567890',
disabilityType: '肢体残疾',
disabilityLevel: '一级',
phone: '13800138000',
province: '北京市',
city: '北京市',
district: '朝阳区',
detailedAddress: '某某街道123号',
birthDate: '1990-01-01',
idAddress: '北京市朝阳区某某街道123号',
idValidDate: '2030-01-01',
disabilityValidDate: '2025-12-31',
canDirectContact: 1,
isMarried: 0,
nation: '汉族',
jobStatus: 0,
specificDisability: '左腿小腿截肢'
}
it('应该正确渲染个人基本信息', () => {
render()
expect(screen.getByText('张三')).toBeInTheDocument()
expect(screen.getByText('男')).toBeInTheDocument()
expect(screen.getByText(maskIdCard('110101199001011234'))).toBeInTheDocument()
expect(screen.getByText('肢体残疾')).toBeInTheDocument()
expect(screen.getByText('一级')).toBeInTheDocument()
expect(screen.getByText('13800138000')).toBeInTheDocument()
})
it('应该渲染加载状态', () => {
render()
// 检查骨架屏加载元素
const skeletonElements = document.querySelectorAll('.animate-pulse')
expect(skeletonElements.length).toBeGreaterThan(0)
})
it('应该在没有数据时显示空状态', () => {
render()
expect(screen.getByText('暂无个人信息')).toBeInTheDocument()
})
it('应该脱敏敏感信息', () => {
render()
// 检查身份证号是否已脱敏(前4位 + 10个星号 + 后4位)
expect(screen.getByText('1101**********1234')).toBeInTheDocument()
// 检查残疾证号是否已脱敏(D123 + 10个星号 + 7890)
// D1234567890有11个字符,后4位是7890
expect(screen.getByText('D123**********7890')).toBeInTheDocument()
})
})