import { describe, it, expect, beforeEach, vi } from 'vitest'; import { screen, fireEvent } from '@testing-library/react'; import { renderWithProviders } from '../../test/utils'; const navigateMock = vi.fn(); vi.mock('react-router-dom', async () => { const actual = await vi.importActual('react-router-dom'); return { ...actual, useNavigate: () => navigateMock }; }); import Topbar from './Topbar'; import { useAuthStore } from '../../stores/authStore'; beforeEach(() => { navigateMock.mockClear(); useAuthStore.setState({ userName: 'ادمین', primaryRole: 'admin', context: null, logout: vi.fn(), } as any); }); describe('Topbar — هدر مطابق clinic-pro-tauri', () => { it('placeholder سرچ «جستجو» است و ⌘K ندارد', () => { renderWithProviders(); expect(screen.getByPlaceholderText('جستجو')).toBeInTheDocument(); expect(screen.queryByText('⌘K')).toBeNull(); }); it('دکمه تنظیمات (چرخ‌دنده) به صفحه تنظیمات نقش می‌رود', () => { renderWithProviders(); fireEvent.click(screen.getByTitle('تنظیمات')); expect(navigateMock).toHaveBeenCalledWith('/admin/settings'); // نقش admin }); it('منوی پروفایل با نام کاربر رندر می‌شود', () => { renderWithProviders(); expect(screen.getByText('ادمین')).toBeInTheDocument(); }); });