import { describe, it, expect } from 'vitest' import { render, screen } from '@testing-library/react' import { axe } from 'vitest-axe' import { Pagination } from './pagination' describe('Pagination', () => { it('renders page numbers', () => { render() expect(screen.getByText('1')).toBeInTheDocument() expect(screen.getByText('5')).toBeInTheDocument() }) it('marks current page with aria-current', () => { render() const currentLink = screen.getByText('3') expect(currentLink).toHaveAttribute('aria-current', 'page') }) it('renders previous and next links', () => { render() expect(screen.getByLabelText('Previous page')).toBeInTheDocument() expect(screen.getByLabelText('Next page')).toBeInTheDocument() }) it('disables previous on first page', () => { render() const prev = screen.getByLabelText('Previous page') expect(prev).toHaveAttribute('aria-disabled', 'true') }) it('disables next on last page', () => { render() const next = screen.getByLabelText('Next page') expect(next).toHaveAttribute('aria-disabled', 'true') }) it('has accessible navigation landmark', () => { render() expect(screen.getByRole('navigation', { name: /pagination/i })).toBeInTheDocument() }) it('does not render when totalPages is 1', () => { const { container } = render() expect(container.firstChild).toBeNull() }) it('passes axe accessibility check', async () => { const { container } = render() const results = await axe(container) expect(results).toHaveNoViolations() }) })