import { render, screen, fireEvent } from '@testing-library/react';
import { describe, it, expect, vi } from 'vitest';
import { DataTablePagination } from '../../src/components/admin/DataTablePagination';
describe('DataTablePagination', () => {
it('应该正确渲染分页组件', () => {
const mockOnPageChange = vi.fn();
render(
);
// 检查分页组件是否渲染
expect(screen.getByRole('navigation')).toBeInTheDocument();
// 检查分页信息是否正确显示
expect(screen.getByText('共 100 条记录,第 1 / 10 页')).toBeInTheDocument();
// 检查页码是否正确显示
expect(screen.getByText('1')).toBeInTheDocument();
expect(screen.getByText('10')).toBeInTheDocument();
});
it('应该处理页码点击', () => {
const mockOnPageChange = vi.fn();
render(
);
// 点击下一页
const nextButton = screen.getByLabelText(/next/i);
fireEvent.click(nextButton);
expect(mockOnPageChange).toHaveBeenCalledWith(2, 10);
});
it('应该禁用上一页按钮当在第一页时', () => {
const mockOnPageChange = vi.fn();
render(
);
const prevButton = screen.getByLabelText(/previous/i);
expect(prevButton).toHaveAttribute('aria-disabled', 'true');
});
it('应该禁用下一页按钮当在最后一页时', () => {
const mockOnPageChange = vi.fn();
render(
);
const nextButton = screen.getByLabelText(/next/i);
expect(nextButton).toHaveAttribute('aria-disabled', 'true');
});
});