import React from 'react'; import { describe, expect, it, vi } from 'vitest'; import { render, screen } from '@testing-library/react'; import { getConfig } from '@openmrs/esm-config'; import { getCoreTranslation } from '@openmrs/esm-translations'; import { PageHeaderContent } from './page-header.component'; const mockGetConfig = vi.mocked(getConfig); const mockGetCoreTranslation = vi.mocked(getCoreTranslation); vi.mock('@openmrs/esm-config', () => ({ getConfig: vi.fn(), })); describe('PageHeaderContent', () => { const mockIllustration = ; it('renders title and illustration', async () => { mockGetConfig.mockResolvedValue({}); render(); await screen.findByText(/test title/i); expect(screen.getByTestId('mock-illustration')).toBeInTheDocument(); }); it('renders implementation name when provided in config', async () => { mockGetCoreTranslation.mockReturnValueOnce('Test Clinic'); mockGetConfig.mockResolvedValue({ implementationName: 'Test Clinic' }); render(); await screen.findByText('Test Clinic'); }); it('does not render implementation name when not provided in config', async () => { mockGetConfig.mockResolvedValue({}); render(); await screen.findByText(/test title/i); expect(screen.queryByText('Test Clinic')).not.toBeInTheDocument(); }); it('applies custom className when provided', async () => { mockGetConfig.mockResolvedValue({}); const { container } = render( , ); await screen.findByText(/test title/i); // eslint-disable-next-line testing-library/no-node-access expect(container.firstChild).toHaveClass('custom-class'); }); it('calls getConfig with correct module name', async () => { mockGetConfig.mockResolvedValue({}); render(); await screen.findByText(/test title/i); expect(getConfig).toHaveBeenCalledWith('@openmrs/esm-styleguide'); }); });