import '@testing-library/jest-dom'
import { fireEvent, render } from '@testing-library/react'
import { axe, toHaveNoViolations } from 'jest-axe'
import { vi } from 'vitest'
import { PktInputWrapper } from '../inputwrapper/InputWrapper'
import { PktRadioButton } from './RadioButton'
expect.extend(toHaveNoViolations)
describe('PktRadiobutton', () => {
// Test case for rendering a basic radiogroup
it('renders without errors', async () => {
const { container } = render()
const inputElement = container.querySelector('input[type="radio"]')
expect(inputElement).toBeInTheDocument()
expect(inputElement).toHaveAttribute('id', 'radio1')
expect(inputElement).toHaveAttribute('name', 'radioGroup')
expect(inputElement).toHaveAttribute('value', 'option1')
})
it('allows selecting one option from the group', async () => {
const handleChange = vi.fn()
const { container } = render(
,
)
const option1 = container.querySelector('input[type="radio"][id="radio1"]')
const option2 = container.querySelector('input[type="radio"][id="radio2"]')
expect(option1).toBeInTheDocument()
expect(option2).toBeInTheDocument()
const changeHandler = vi.fn()
option2?.addEventListener('change', changeHandler)
// Manually dispatch a change event
option2?.dispatchEvent(new CustomEvent('change', { detail: { value: 'option2' }, bubbles: true }))
// Ensure event was fired
expect(changeHandler).toHaveBeenCalled()
expect(changeHandler.mock.calls[0][0].detail).toEqual({ value: 'option2' })
})
describe('accessibility', () => {
it('renders with no wcag errors with axe', async () => {
const { container } = render(
,
)
const results = await axe(container)
expect(results).toHaveNoViolations()
})
})
})