import React from 'react'; import { vi, describe, it, expect } from 'vitest'; import { render, screen } from '@testing-library/react'; import { useConfig } from '@openmrs/esm-framework'; import { mockPastVisit } from '__mocks__'; import { useVisit } from './current-visit.resource'; import CurrentVisit from './current-visit-summary.component'; const useVisitMock = vi.mocked(useVisit); vi.mocked(useConfig).mockReturnValue({ concepts: {} }); vi.mock('./current-visit.resource', () => ({ useVisit: vi.fn().mockReturnValue({ visit: { visitType: { display: 'Visit Type' }, encounters: [], }, error: null, isLoading: false, }), })); const patientUuid = mockPastVisit.data.results[0].patient.uuid; const visitUuid = mockPastVisit.data.results[0].uuid; describe('CurrentVisit', () => { it('renders visit details correctly', async () => { render(); expect(screen.queryByRole('progressbar')).not.toBeInTheDocument(); expect(screen.getByText('Visit Type')).toBeInTheDocument(); expect(screen.getByText('Scheduled for today')).toBeInTheDocument(); expect(screen.getByText('On time')).toBeInTheDocument(); }); it('renders a loading skeleton when fetching data', async () => { useVisitMock.mockReturnValue({ visit: null, error: null, isLoading: true, isValidating: false, mutate: vi.fn(), }); render(); expect(screen.getByRole('progressbar')).toBeInTheDocument(); }); it('renders a fallback when visit uuid is missing', async () => { useVisitMock.mockReturnValue({ visit: null, error: null, isLoading: false, isValidating: false, mutate: vi.fn(), }); render(); expect(useVisitMock).toHaveBeenCalledWith(undefined); expect(screen.getByText('No active visit')).toBeInTheDocument(); }); it('renders a fallback when visit data is unavailable', async () => { useVisitMock.mockReturnValue({ visit: null, error: null, isLoading: false, isValidating: false, mutate: vi.fn(), }); render(); expect(screen.getByText('No active visit')).toBeInTheDocument(); }); });