import { fireEvent, render, screen } from '@testing-library/react' import { axe } from 'jest-axe' import Counter from '../index' describe('counter', () => { it('should render correctly (snapshot)', () => { const mockHandler = jest.fn() const { container } = render( , ) expect(container).toMatchSnapshot() }) it('should render accessibility guidelines (AXE)', async () => { const mockHandler = jest.fn() const { container } = render( , ) const results = await axe(container) expect(results).toHaveNoViolations() }) it('should call onDecrement when "-" button is clicked', () => { const mockHandler = jest.fn() render( , ) const decrementButton = screen.getByLabelText('Decrement value') fireEvent.click(decrementButton) expect(mockHandler).toHaveBeenCalledTimes(1) }) it('should call onIncrement when "+" button is clicked', () => { const mockHandler = jest.fn() render( , ) const incrementButton = screen.getByLabelText('Increment value') fireEvent.click(incrementButton) expect(mockHandler).toHaveBeenCalledTimes(1) }) it('should call onIncrementAmountChange when input value changes', () => { const mockHandler = jest.fn() render( , ) const incrementAmountInput = screen.getByLabelText('Set increment amount') fireEvent.change(incrementAmountInput, { target: { value: '10' } }) expect(mockHandler).toHaveBeenCalledTimes(1) }) it('should call onIncrementByAmount when "Add Amount" button is clicked', () => { const mockHandler = jest.fn() render( , ) const addAmountButton = screen.getByLabelText('Add Amount') fireEvent.click(addAmountButton) expect(mockHandler).toHaveBeenCalledTimes(1) }) it('should call onIncrementAsync when "Add Async" button is clicked', () => { const mockHandler = jest.fn() render( , ) const addAsyncButton = screen.getByLabelText('Add Async') fireEvent.click(addAsyncButton) expect(mockHandler).toHaveBeenCalledTimes(1) }) it('should call onIncrementIfOdd when "Add If Odd" button is clicked', () => { const mockHandler = jest.fn() render( , ) const addIfOddButton = screen.getByLabelText('Add If Odd') fireEvent.click(addIfOddButton) expect(mockHandler).toHaveBeenCalledTimes(1) }) })