import React from 'react'; import { vi, describe, expect, test, beforeEach } from 'vitest'; import { render, screen } from '@testing-library/react'; import { emrConfigurationMock } from '__mocks__'; import { useEmrConfiguration } from '@openmrs/esm-framework'; import { type PatientNote } from '../types'; import PatientNotesHistory from './notes-container.component'; const mockedUseEmrConfiguration = vi.mocked(useEmrConfiguration); const mockPatientNotes: PatientNote[] = [ { encounterUuid: 'note-1', encounterNote: 'Patient shows improvement with current medication.', encounterNoteRecordedAt: '2024-08-01T12:34:56Z', encounterProvider: 'Dr. John Doe', obsUuid: 'obsUuid1', conceptUuid: 'concept1', encounterTypeUuid: 'inpatientNoteEncounterTypeUuid', isEdited: false, lastEditedBy: '', lastEditedAt: '2024-08-01T12:34:56Z', editHistory: [], }, { encounterUuid: 'note-2', encounterNote: 'Blood pressure is slightly elevated. Consider adjusting medication.', encounterNoteRecordedAt: '2024-08-02T14:22:00Z', encounterProvider: 'Dr. Jane Smith', obsUuid: 'obsUuid2', conceptUuid: 'concept1', encounterTypeUuid: 'inpatientNoteEncounterTypeUuid', isEdited: false, lastEditedBy: '', lastEditedAt: '2024-08-02T14:22:00Z', editHistory: [], }, ]; const mockEditedPatientNote: PatientNote = { encounterUuid: 'note-3', encounterNote: 'Updated: Patient is recovering well.', encounterNoteRecordedAt: '2024-08-03T09:00:00Z', encounterProvider: 'Dr. John Doe', obsUuid: 'obsUuid3', conceptUuid: 'concept1', encounterTypeUuid: 'inpatientNoteEncounterTypeUuid', isEdited: true, lastEditedBy: 'Dr. Jane Smith', lastEditedAt: '2024-08-04T11:00:00Z', editHistory: [ { note: 'Original: Patient is stable.', recordedAt: '2024-08-03T09:00:00Z', recordedBy: 'Dr. John Doe', }, ], }; const defaultProps = { patientNotes: [], mutatePatientNotes: vi.fn(), isLoading: false, errorFetchingPatientNotes: null, promptBeforeClosing: vi.fn(), }; describe('PatientNotesHistory', () => { beforeEach(() => { vi.resetAllMocks(); mockedUseEmrConfiguration.mockReturnValue({ emrConfiguration: emrConfigurationMock, mutateEmrConfiguration: vi.fn(), isLoadingEmrConfiguration: false, errorFetchingEmrConfiguration: null, }); }); test('displays loading skeletons when loading', () => { render(); expect(screen.getAllByTestId('in-patient-note-skeleton')).toHaveLength(4); }); test('displays patient notes when available', () => { render(); expect(screen.getByText('History')).toBeInTheDocument(); expect(screen.getByText('Patient shows improvement with current medication.')).toBeInTheDocument(); expect(screen.getByText(/Dr\. John Doe/)).toBeInTheDocument(); expect(screen.getByText('Blood pressure is slightly elevated. Consider adjusting medication.')).toBeInTheDocument(); expect(screen.getByText(/Dr\. Jane Smith/)).toBeInTheDocument(); }); test('displays "Last edited by" for an edited note', () => { render(); expect(screen.getByText('Updated: Patient is recovering well.')).toBeInTheDocument(); expect(screen.getByText(/Last edited by:.*Dr\. Jane Smith/)).toBeInTheDocument(); }); });