import { render, fireEvent, screen } from '../test-utils'; import CheckboxOption from '.'; describe('Checkbox option', () => { const defaultProps = { id: 'id', name: 'name', title: 'Title', onChange: jest.fn(), 'aria-label': 'test-label', }; describe('by default', () => { render(); const checkbox = screen.getByRole('checkbox'); it('is not checked', () => { expect(checkbox).not.toBeChecked(); }); it('is not disabled', () => { expect(checkbox).toBeEnabled(); }); }); it('has `aria-label` attr', () => { render(); const checkbox = screen.getByLabelText('test-label'); expect(checkbox).toBeInTheDocument(); }); it('is checked when checked prop is true', () => { render(); expect(screen.getByRole('checkbox')).toBeChecked(); }); it('is disabled when disabled prop is true', () => { render(); expect(screen.getByRole('checkbox')).toBeDisabled(); }); describe('onChange', () => { it('is called with new checked value when the option is clicked', () => { const onChange = jest.fn(); const { rerender } = render(); const label = screen.getByLabelText('test-label'); expect(onChange).not.toHaveBeenCalled(); fireEvent.click(label); expect(onChange).toHaveBeenCalledWith(true); rerender(); fireEvent.click(label); expect(onChange).toHaveBeenCalledWith(false); }); it('is not called if the option is disabled', () => { const onChange = jest.fn(); render(); const label = screen.getByLabelText('test-label'); expect(onChange).not.toHaveBeenCalled(); fireEvent.click(label); expect(onChange).not.toHaveBeenCalled(); }); }); it('renders aligned with container content', () => { render(); expect(document.querySelector('.np-option__container-aligned')).toBeInTheDocument(); }); });