/**
* AttendanceStats组件测试
*/
import React from 'react'
import { render, screen } from '@testing-library/react'
import '@testing-library/jest-dom'
import { AttendanceStats } from '@/components/AttendanceStats'
import { AttendanceStats as AttendanceStatsType } from '@/types/attendance'
describe('AttendanceStats组件', () => {
const mockStats: AttendanceStatsType = {
attendanceRate: 100,
normalDays: 28,
lateCount: 2,
earlyLeaveCount: 1,
absentCount: 0
}
test('应该渲染考勤统计数据', () => {
render()
expect(screen.getByText('100%')).toBeInTheDocument()
expect(screen.getByText('28天')).toBeInTheDocument()
})
test('应该渲染出勤率标签', () => {
render()
expect(screen.getByText('出勤率')).toBeInTheDocument()
})
test('应该渲染正常出勤标签', () => {
render()
expect(screen.getByText('正常出勤')).toBeInTheDocument()
})
test('应该渲染异常统计数据', () => {
render()
expect(screen.getByText('迟到: 2次')).toBeInTheDocument()
expect(screen.getByText('早退: 1次')).toBeInTheDocument()
expect(screen.getByText('缺勤: 0次')).toBeInTheDocument()
})
test('应该正确渲染零统计数据', () => {
const zeroStats: AttendanceStatsType = {
attendanceRate: 0,
normalDays: 0,
lateCount: 0,
earlyLeaveCount: 0,
absentCount: 0
}
render()
expect(screen.getByText('0%')).toBeInTheDocument()
expect(screen.getByText('0天')).toBeInTheDocument()
expect(screen.getByText('迟到: 0次')).toBeInTheDocument()
expect(screen.getByText('早退: 0次')).toBeInTheDocument()
expect(screen.getByText('缺勤: 0次')).toBeInTheDocument()
})
})