UNPKG

@amsterdam/design-system-react

Version:

All React components from the Amsterdam Design System. Use it to compose pages in your website or application.

70 lines (69 loc) 2.98 kB
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime"; /** * @license EUPL-1.2+ * Copyright Gemeente Amsterdam */ import { render, screen } from '@testing-library/react'; import { createRef } from 'react'; import { Switch } from './Switch'; import '@testing-library/jest-dom'; describe('Switch', () => { it('renders an element with role switch', () => { render(_jsx(Switch, {})); const switchElement = screen.getByRole('switch'); expect(switchElement).toBeInTheDocument(); expect(switchElement).not.toBeChecked(); }); it('is not disabled by default', () => { render(_jsx(Switch, {})); const switchElement = screen.getByRole('switch'); expect(switchElement).not.toBeDisabled(); }); it('can trigger a change event', () => { const handleChange = jest.fn(); render(_jsx(Switch, { onChange: handleChange })); const switchElement = screen.getByRole('switch'); switchElement.click(); expect(handleChange).toHaveBeenCalled(); }); it('does not trigger a change event when disabled', () => { const handleChange = jest.fn(); render(_jsx(Switch, { disabled: true, onChange: handleChange })); const switchElement = screen.getByRole('switch'); switchElement.click(); expect(handleChange).not.toHaveBeenCalled(); }); it('does trigger a change event when clicking on associate label', () => { const handleChange = jest.fn(); const MockImpl = () => { return (_jsxs(_Fragment, { children: [_jsx("label", { "data-testid": "switch-label", htmlFor: "switch-label", children: "Label" }), _jsx(Switch, { id: "switch-label", onChange: handleChange })] })); }; render(_jsx(MockImpl, {})); const label = screen.getByTestId('switch-label'); label.click(); expect(handleChange).toHaveBeenCalled(); }); it('sets the checked state when switch is clicked', () => { render(_jsx(Switch, {})); const switchElement = screen.getByRole('switch'); expect(switchElement).not.toBeChecked(); switchElement.click(); expect(switchElement).toBeChecked(); }); it('renders a design system BEM class name', () => { const { container } = render(_jsx(Switch, {})); const component = container.querySelector(':only-child'); expect(component).toHaveClass('ams-switch'); }); it('renders an extra class name', () => { const { container } = render(_jsx(Switch, { className: "extra" })); const component = container.querySelector(':only-child'); expect(component).toHaveClass('ams-switch extra'); }); it('is able to pass a React ref', () => { const ref = createRef(); render(_jsx(Switch, { ref: ref })); const switchElement = screen.getByRole('switch'); expect(ref.current).toBe(switchElement); }); });