import { render, screen } from '@testing-library/react';
import { ThemeProvider } from '../../theme';
import VisitNoteCard from './VisitNoteCard';
import type { VisitNote } from '@/services/patientRecords/types';

const NOTE: VisitNote = {
  id: 8100,
  bookingId: 5005,
  nurseProfileId: 1,
  nurseDisplayName: 'مریم رضایی',
  body: 'وضعیت پایدار بود؛ داروها داده شد.',
  taskResults: [
    { label: 'دادن متفورمین', done: true },
    { label: 'پیاده‌روی کوتاه', done: false },
  ],
  recordedAt: '2026-06-01T09:00:00Z',
};

function renderCard(note: VisitNote = NOTE) {
  return render(
    <ThemeProvider>
      <VisitNoteCard note={note} dateLabel="۱ خرداد ۱۴۰۵" authorFallback="پرستار" />
    </ThemeProvider>,
  );
}

describe('<VisitNoteCard/> component', () => {
  it('renders the nurse name, date and body', () => {
    renderCard();
    expect(screen.getByText('مریم رضایی')).toBeInTheDocument();
    expect(screen.getByText('۱ خرداد ۱۴۰۵')).toBeInTheDocument();
    expect(screen.getByText('وضعیت پایدار بود؛ داروها داده شد.')).toBeInTheDocument();
  });

  it('renders each ticked task as a chip', () => {
    renderCard();
    expect(screen.getByText('دادن متفورمین')).toBeInTheDocument();
    expect(screen.getByText('پیاده‌روی کوتاه')).toBeInTheDocument();
  });

  it('falls back to the provided author label when the nurse name is missing', () => {
    renderCard({ ...NOTE, nurseDisplayName: null });
    expect(screen.getByText('پرستار')).toBeInTheDocument();
  });
});
