import React from 'react'; import { vi, describe, it, expect, beforeEach } from 'vitest'; import { render, screen } from '@testing-library/react'; import Root from './root.component'; vi.mock('./home.component', () => ({ __esModule: true, default: vi.fn(() =>
Home Component
), })); vi.mock('./queue-screen/queue-screen.component', () => ({ __esModule: true, default: vi.fn(() =>
Queue Screen Component
), })); vi.mock('./views/queue-table-by-status-view.component', () => ({ __esModule: true, default: vi.fn(({ queueUuid }) => (
Queue Table By Status: {queueUuid}
)), })); vi.mock('./admin/admin-page/admin-page.component', () => ({ __esModule: true, default: vi.fn(() =>
Admin Page Component
), })); describe('Root Component', () => { beforeEach(() => { window.getOpenmrsSpaBase = vi.fn().mockReturnValue('/openmrs/spa/'); }); it('renders Home component for "/" route', () => { window.history.pushState({}, 'Home', '/openmrs/spa/home/service-queues/'); render(); expect(screen.getByTestId('home-component')).toBeInTheDocument(); }); it('renders QueueTableByStatusView component for "/queue-table-by-status/:queueUuid" route', () => { window.history.pushState( {}, 'Queue Table By Status', '/openmrs/spa/home/service-queues/queue-table-by-status/queue-123', ); render(); expect(screen.getByTestId('queue-table-by-status-component')).toBeInTheDocument(); expect(screen.getByText(/Queue Table By Status: queue-123/)).toBeInTheDocument(); }); it('renders QueueScreen component for "/screen" route', () => { window.history.pushState({}, 'Queue Screen', '/openmrs/spa/home/service-queues/screen'); render(); expect(screen.getByTestId('queue-screen-component')).toBeInTheDocument(); }); it('renders AdminPage component for "/admin" route', () => { window.history.pushState({}, 'Admin Page', '/openmrs/spa/home/service-queues/admin'); render(); expect(screen.getByTestId('admin-page-component')).toBeInTheDocument(); }); it('uses correct basename from getOpenmrsSpaBase', () => { window.history.pushState({}, 'Home', '/openmrs/spa/home/service-queues/'); render(); expect(window.getOpenmrsSpaBase).toHaveBeenCalled(); }); });