import React from 'react'; import { vi, describe, it, expect } from 'vitest'; import userEvent from '@testing-library/user-event'; import { render, screen } from '@testing-library/react'; import { navigate } from '@openmrs/esm-framework'; import { mockPatient } from '__mocks__'; import EditPatientDetailsButton from './edit-patient-details-button.component'; const mockNavigate = vi.mocked(navigate); describe('EditPatientDetailsButton', () => { const patientUuid = mockPatient.uuid; it('renders button with correct text', () => { render(); expect(screen.getByRole('menuitem')).toBeInTheDocument(); expect(screen.getByText(/edit patient details/i)).toBeInTheDocument(); }); it('navigates to edit page when clicked', async () => { const user = userEvent.setup(); render(); const button = screen.getByRole('menuitem'); await user.click(button); expect(mockNavigate).toHaveBeenCalledWith({ to: expect.stringContaining(`/patient/${patientUuid}/edit`), }); expect(mockNavigate).toHaveBeenCalledTimes(1); }); });