import * as React from 'react'; import { render, screen } from '@testing-library/react'; import '@testing-library/jest-dom'; import userEvent from '@testing-library/user-event'; import * as CheckControlBase from '@tesseract-design/web-base-checkcontrol'; import { vi } from 'vitest'; import { ToggleSwitch } from '.'; vi.mock('@tesseract-design/web-base-checkcontrol'); describe('ToggleSwitch', () => { it('renders a checkbox', () => { render( ); const checkbox = screen.getByRole('checkbox'); expect(checkbox).toBeInTheDocument(); }); it('renders a compact switch', () => { render( ); expect(CheckControlBase.CheckIndicatorArea).toBeCalledWith(expect.objectContaining({ compact: true, })); }); it('renders a block switch', () => { render( ); expect(CheckControlBase.ClickAreaWrapper).toBeCalledWith(expect.objectContaining({ block: true, })); }); it('renders a subtext', () => { render( ); const subtext: HTMLElement = screen.getByTestId('subtext'); expect(subtext).toBeInTheDocument(); }); it('handles click events', () => { const onClick = vi.fn().mockImplementationOnce((e) => { e.preventDefault(); }) render( ); const checkbox: HTMLInputElement = screen.getByRole('checkbox'); userEvent.click(checkbox); expect(onClick).toBeCalled(); }); it('handles change events', () => { const onChange = vi.fn().mockImplementationOnce((e) => { e.preventDefault(); }) render( ); const checkbox: HTMLInputElement = screen.getByRole('checkbox'); userEvent.click(checkbox); expect(onChange).toBeCalled(); }); });