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<typeof import('react-router-dom')>('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(<Topbar />);
    expect(screen.getByPlaceholderText('جستجو')).toBeInTheDocument();
    expect(screen.queryByText('⌘K')).toBeNull();
  });

  it('دکمه تنظیمات (چرخ‌دنده) به صفحه تنظیمات نقش می‌رود', () => {
    renderWithProviders(<Topbar />);
    fireEvent.click(screen.getByTitle('تنظیمات'));
    expect(navigateMock).toHaveBeenCalledWith('/admin/settings'); // نقش admin
  });

  it('منوی پروفایل با نام کاربر رندر می‌شود', () => {
    renderWithProviders(<Topbar />);
    expect(screen.getByText('ادمین')).toBeInTheDocument();
  });
});
