import { describe, it, expect, vi } from 'vitest'; import { screen } from '@testing-library/react'; import { renderWithProviders } from '../test/utils'; vi.mock('sonner', () => ({ toast: { success: vi.fn(), error: vi.fn() } })); vi.mock('../lib/api', () => ({ api: { get: vi.fn(), post: vi.fn(), patch: vi.fn(), put: vi.fn(), delete: vi.fn() }, ApiError: class extends Error {}, })); import AppointmentTurnCard, { type AppointmentCardData } from './AppointmentTurnCard'; const base: AppointmentCardData = { uuid: 'a1', starts_at: 1754000000, status: 'confirmed', version: 1, doctor_name: 'دکتر ژیلا فتحی', service_name: null, }; describe('AppointmentTurnCard', () => { it('renders title, date/time labels, doctor and the live status label', () => { renderWithProviders(); expect(screen.getByText('نوبت')).toBeInTheDocument(); // no service → generic title expect(screen.getByText('تاریخ:')).toBeInTheDocument(); expect(screen.getByText('ساعت:')).toBeInTheDocument(); expect(screen.getByText('پرسنل:')).toBeInTheDocument(); expect(screen.getByText('دکتر ژیلا فتحی')).toBeInTheDocument(); expect(screen.getByText('قطعی شده')).toBeInTheDocument(); // confirmed via STATUS_META }); it('falls back to «—» when the doctor is missing', () => { renderWithProviders(); expect(screen.getByText('—')).toBeInTheDocument(); }); it('prefers the service name as the title when present', () => { renderWithProviders(); expect(screen.getByText('لیزر')).toBeInTheDocument(); }); });