import { describe, it, expect, vi } from 'vitest'; import { render, screen, fireEvent } from '@testing-library/react'; import Switch from './Switch'; /** * سوییچ تنها شکل مجاز ورودی boolean در پنل است؛ چک‌باکس نیتیو جایی ندارد. * این تست‌ها قرارداد آن را قفل می‌کنند: نقش `switch`، نامِ دسترسی‌پذیرِ کوتاه، * و ظاهرِ آمده از کلاس‌های دیزاین‌سیستم. */ describe('Switch', () => { it('نقشش switch است نه checkbox', () => { render( {}} label="فعال است" />); expect(screen.getByRole('switch', { name: 'فعال است' })).toBeInTheDocument(); expect(screen.queryByRole('checkbox')).not.toBeInTheDocument(); }); it('ظاهرش از کلاس‌های دیزاین‌سیستم می‌آید', () => { const { container } = render( {}} ariaLabel="وضعیت" />); expect(container.querySelector('.switch')).not.toBeNull(); expect(container.querySelector('.switch-track .switch-thumb')).not.toBeNull(); }); it('کلیک مقدار تازه را می‌دهد، نه رویداد خام', () => { const onChange = vi.fn(); render(); fireEvent.click(screen.getByRole('switch')); expect(onChange).toHaveBeenCalledWith(true); }); /** متنِ `