import '@testing-library/jest-dom'
import { fireEvent, render, screen } from '@testing-library/react'
import { axe, toHaveNoViolations } from 'jest-axe'
import { PktTextinput } from './Textinput'
expect.extend(toHaveNoViolations)
const inputId = 'inputId'
const label = 'Input Label'
describe('PktTextinput', () => {
test('renders input field with correct props', async () => {
const { getByLabelText } = render()
const inputElement = getByLabelText('Input Label')
expect(inputElement).toBeInTheDocument()
expect(inputElement.tagName).toBe('INPUT')
expect(inputElement.id).toBe('inputId')
})
test('renders error message when hasError prop is true', async () => {
render()
const errorMessageId = screen.getByRole('textbox').getAttribute('aria-errormessage')
const alertContainer = screen.getByRole('alert')
expect(alertContainer).toHaveAttribute('id', errorMessageId)
expect(alertContainer).toHaveTextContent('Input error')
})
describe('PktTextinput', () => {
test('toggles helptext class', async () => {
const { getByText, container } = render(
,
)
const expandButton = getByText('Les mer').closest('button') as HTMLButtonElement
const helptextElement = container.querySelector('.pkt-inputwrapper__helptext-expandable-closed')
await fireEvent.click(expandButton)
expect(helptextElement).toHaveClass('pkt-inputwrapper__helptext-expandable-open')
await fireEvent.click(expandButton)
expect(helptextElement).toHaveClass('pkt-inputwrapper__helptext-expandable-closed')
})
})
describe('accessibility', () => {
it('renders with no wcag errors with axe', async () => {
const { container } = render()
const results = await axe(container)
expect(results).toHaveNoViolations()
})
})
})