import '@testing-library/jest-dom'
import { fireEvent, render, screen } from '@testing-library/react'
import { axe, toHaveNoViolations } from 'jest-axe'
import { PktTextarea } from './Textarea'
expect.extend(toHaveNoViolations)
describe('PktTextarea', () => {
test('renders input field with correct props', async () => {
const { getByLabelText } = render()
const inputElement = getByLabelText('Input Label')
expect(inputElement).toBeInTheDocument()
expect(inputElement.tagName).toBe('TEXTAREA')
expect(inputElement.id).toBe('inputId-input')
})
test('renders error message when hasError prop is true', async () => {
render()
const errorMessageId = 'inputId-input-error' // når https://github.com/oslokommune/punkt/issues/3093 er fiksa: screen.getByRole('textbox').getAttribute('aria-errormessage')
const alertContainer = screen.getByRole('alert')
expect(alertContainer).toHaveAttribute('id', errorMessageId)
expect(alertContainer).toHaveTextContent('Input error')
})
describe('PktTextarea', () => {
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()
await window.customElements.whenDefined('pkt-textarea')
const results = await axe(container)
expect(results).toHaveNoViolations()
})
})
})