diff --git a/frontend/src/__tests__/main.test.tsx b/frontend/src/__tests__/main.test.tsx index ea92522c..27fc47e1 100644 --- a/frontend/src/__tests__/main.test.tsx +++ b/frontend/src/__tests__/main.test.tsx @@ -1,6 +1,5 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; - jest.mock('../App.tsx', () => ({ __esModule: true, default: () =>
App
, @@ -12,37 +11,28 @@ jest.mock('@/components/utils/ThemeProvider.tsx', () => ({ ), })); -describe('main.tsx', () => { - beforeEach(() => { - document.body.innerHTML = '
'; - }); +describe('main.tsx bootstrap', () => { + const renderMock = jest.fn(); - it('has root element available for React app', () => { - const rootElement = document.getElementById('root'); - expect(rootElement).toBeInTheDocument(); - expect(rootElement).not.toBeNull(); - }); + beforeEach(() => { + jest.spyOn(ReactDOM, 'createRoot').mockReturnValue({ + render: renderMock, + } as any); - it('can create React root without errors', () => { - const rootElement = document.getElementById('root'); - expect(() => { - ReactDOM.createRoot(rootElement!); - }).not.toThrow(); + document.body.innerHTML = '
'; }); - it('imports required React dependencies', () => { - expect(React).toBeDefined(); - expect(ReactDOM).toBeDefined(); - expect(React.StrictMode).toBeDefined(); + afterEach(() => { + jest.restoreAllMocks(); + document.body.innerHTML = ''; }); - it('verifies App and ThemeProvider components are available', () => { - const App = require('../App.tsx').default; - const { ThemeProvider } = require('@/components/utils/ThemeProvider.tsx'); + it('creates React root and renders the app', async () => { + await import('../main.tsx'); - expect(App).toBeDefined(); - expect(ThemeProvider).toBeDefined(); - expect(typeof App).toBe('function'); - expect(typeof ThemeProvider).toBe('function'); + expect(ReactDOM.createRoot).toHaveBeenCalledWith( + document.getElementById('root') + ); + expect(renderMock).toHaveBeenCalled(); }); });