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()
})
})