import { render, screen } from '@testing-library/react'
import { House } from 'lucide-react'
import { describe, expect, it } from 'vitest'
import { Icon } from './Icon.tsx'
function svg(container: HTMLElement) {
return container.querySelector('svg')!
}
describe('Icon', () => {
it('is hidden and unnamed without a label', () => {
const { container } = render()
expect(svg(container)).toHaveAttribute('aria-hidden', 'true')
expect(svg(container)).not.toHaveAttribute('aria-label')
expect(screen.queryByRole('img')).toBeNull()
})
it('is a named image when given a label', () => {
const { container } = render()
expect(svg(container)).not.toHaveAttribute('aria-hidden')
expect(screen.getByRole('img', { name: 'Home' })).toBe(svg(container))
})
it('draws at stroke width 2.75', () => {
const { container } = render()
expect(svg(container)).toHaveAttribute('stroke-width', '2.75')
})
it('is 22 px at the nav size', () => {
const { container } = render()
const style = getComputedStyle(svg(container))
expect([style.width, style.height]).toEqual(['22px', '22px'])
})
it('is 16 px inline by default', () => {
const { container } = render()
const style = getComputedStyle(svg(container))
expect([style.width, style.height]).toEqual(['16px', '16px'])
})
it('merges a caller className', () => {
const { container } = render()
expect(svg(container)).toHaveClass('extra')
})
})