import { describe, expect, it, vi } from 'vitest'
import { fireEvent, renderWithProviders, screen } from '../../../test/utils'
import ImageViewer from './ImageViewer'
describe('ImageViewer', () => {
const items = [
{ src: 'https://cdn.example.com/one.jpg', alt: 'One' },
{ src: 'https://cdn.example.com/two.jpg', filename: 'two.png' },
]
it('renders nothing without an active item', () => {
const { container } = renderWithProviders(
)
expect(container.firstChild).toBeNull()
})
it('gates the image on open and resolves filename labels', () => {
const { rerender } = renderWithProviders(
)
expect(screen.queryByRole('img')).toBeNull()
expect(screen.getByTestId('image-viewer')).toHaveAttribute(
'aria-label',
'one.jpg'
)
expect(
screen
.getByTestId('image-viewer')
.querySelector('button[aria-label="Download one.jpg"]')
).toBeInTheDocument()
rerender()
expect(screen.getByRole('img')).toHaveAttribute('alt', 'One')
expect(screen.getByRole('img')).toHaveAttribute('draggable', 'false')
})
it('renders counter and navigation only for multiple items', () => {
renderWithProviders(
)
expect(screen.getByText('2 / 2')).toBeInTheDocument()
expect(
screen.getByRole('button', { name: 'Previous image' })
).toBeInTheDocument()
expect(screen.getByRole('img')).toHaveAttribute('src', items[1].src)
fireEvent.click(screen.getByRole('button', { name: 'Previous image' }))
expect(screen.getByText('1 / 2')).toBeInTheDocument()
expect(screen.getByRole('img')).toHaveAttribute('src', items[0].src)
})
})