import React from 'react'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import '@testing-library/jest-dom/vitest'; import { render, screen } from '@testing-library/react'; import { useConfig, usePrimaryIdentifierCode } from '@openmrs/esm-react-utils'; import PatientBannerPatientIdentifiers from './patient-banner-patient-identifiers.component'; const mockUsePrimaryIdentifierCode = vi.mocked(usePrimaryIdentifierCode); const mockUseConfig = vi.mocked(useConfig); describe('PatientBannerPatientIdentifiers', () => { const mockIdentifiers = [ { use: 'official', type: { coding: [{ code: '05a29f94-c0ed-11e2-94be-8c13b969e334' }], text: 'OpenMRS ID', }, value: '100GEJ', }, { use: 'official', type: { coding: [{ code: '4281ec43-388b-4c25-8bb2-deaff0867b2c' }], text: 'National ID', }, value: '123456789', }, ]; beforeEach(() => { mockUsePrimaryIdentifierCode.mockReturnValue({ primaryIdentifierCode: '05a29f94-c0ed-11e2-94be-8c13b969e334', isLoading: false, error: undefined, }); mockUseConfig.mockReturnValue({ excludePatientIdentifierCodeTypes: { uuids: [] }, }); }); it('renders the patient identifiers', async () => { render(); expect(screen.getByText(/openmrs id/i)).toBeInTheDocument(); expect(screen.getByText(/100gej/i)).toBeInTheDocument(); expect(screen.getByText(/national id/i)).toBeInTheDocument(); expect(screen.getByText(/123456789/i)).toBeInTheDocument(); }); it('does not render identifier labels if showIdentifierLabel is false', () => { render(); expect(screen.queryByText(/openmrs id/i)).not.toBeInTheDocument(); expect(screen.getByText(/100gej/i)).toBeInTheDocument(); expect(screen.queryByText(/national id/i)).not.toBeInTheDocument(); expect(screen.getByText(/123456789/i)).toBeInTheDocument(); }); it('renders nothing if identifiers are not provided', () => { const { container } = render(); expect(container).toBeEmptyDOMElement(); }); it('filters out excluded identifier types', () => { mockUseConfig.mockReturnValue({ excludePatientIdentifierCodeTypes: { uuids: ['4281ec43-388b-4c25-8bb2-deaff0867b2c'] }, }); render(); expect(screen.getByText(/openmrs id/i)).toBeInTheDocument(); expect(screen.queryByText(/national id/i)).not.toBeInTheDocument(); }); });