import { describe, it, expect, vi } from 'vitest'; import { render, screen } from '@testing-library/react'; import Modal from './Modal'; /** * فرم‌های بلند (ثبت نوبت) کلِ کارت را اسکرول می‌کردند، پس عنوان و دکمهٔ اصلی از دید * خارج می‌شد. حالا هدر و فوتر بیرون از ناحیهٔ اسکرول‌اند و فقط بدنه اسکرول می‌شود. */ describe('Modal', () => { const renderModal = (size?: 'sm' | 'md' | 'lg' | 'xl') => render( ثبت}>

محتوای بلند

, ); it('هدر و فوتر بیرون از ناحیهٔ اسکرول می‌مانند', () => { renderModal(); const body = document.querySelector('.modal-body'); expect(body).not.toBeNull(); expect(body!.textContent).toBe('محتوای بلند'); // نه عنوان و نه دکمه نباید داخل بدنه باشند، وگرنه با محتوا اسکرول می‌شوند. expect(body!.querySelector('.modal-head')).toBeNull(); expect(body!.querySelector('.modal-foot')).toBeNull(); expect(screen.getByRole('button', { name: 'ثبت' }).closest('.modal-foot')).not.toBeNull(); }); it('عرض از size می‌آید', () => { const { unmount } = renderModal('sm'); expect((document.querySelector('.modal') as HTMLElement).style.maxWidth).toBe('420px'); unmount(); renderModal('lg'); expect((document.querySelector('.modal') as HTMLElement).style.maxWidth).toBe('720px'); }); it('بسته، هیچ چیزی رندر نمی‌کند', () => { render(

محتوا

); expect(document.querySelector('.modal')).toBeNull(); }); });