import { describe, it, expect, vi } from 'vitest' import { render, screen } from '@testing-library/react' import { Route } from '../__root' // Mock all dependencies vi.mock('@/containers/LeftPanel', () => ({ default: () =>
LeftPanel
, })) vi.mock('@/containers/dialogs/AppUpdater', () => ({ default: () =>
AppUpdater
, })) vi.mock('@/containers/dialogs/CortexFailureDialog', () => ({ CortexFailureDialog: () =>
CortexFailure
, })) vi.mock('@/providers/AppearanceProvider', () => ({ AppearanceProvider: ({ children }: { children: React.ReactNode }) => children, })) vi.mock('@/providers/ThemeProvider', () => ({ ThemeProvider: ({ children }: { children: React.ReactNode }) => children, })) vi.mock('@/providers/KeyboardShortcuts', () => ({ KeyboardShortcutsProvider: ({ children }: { children: React.ReactNode }) => children, })) vi.mock('@/providers/DataProvider', () => ({ DataProvider: ({ children }: { children: React.ReactNode }) => children, })) vi.mock('@/providers/ExtensionProvider', () => ({ ExtensionProvider: ({ children }: { children: React.ReactNode }) => children, })) vi.mock('@/providers/ToasterProvider', () => ({ ToasterProvider: ({ children }: { children: React.ReactNode }) => children, })) vi.mock('@/providers/AnalyticProvider', () => ({ AnalyticProvider: () =>
AnalyticProvider
, })) vi.mock('@/i18n/TranslationContext', () => ({ TranslationProvider: ({ children }: { children: React.ReactNode }) => children, })) vi.mock('@/hooks/useAnalytic', () => ({ useAnalytic: vi.fn(() => ({ productAnalyticPrompt: false })), })) vi.mock('@/hooks/useLeftPanel', () => ({ useLeftPanel: () => ({ open: true }), })) vi.mock('@/containers/analytics/PromptAnalytic', () => ({ PromptAnalytic: () =>
PromptAnalytic
, })) vi.mock('@/containers/dialogs/ToolApproval', () => ({ default: () =>
ToolApproval
, })) vi.mock('@/containers/dialogs/OutOfContextDialog', () => ({ default: () =>
OutOfContext
, })) // Mock Outlet from react-router vi.mock('@tanstack/react-router', () => ({ createRootRoute: (config: any) => ({ component: config.component }), Outlet: () =>
Outlet
, useRouterState: vi.fn(() => ({ location: { pathname: '/normal-route' }, })), })) vi.mock('@/constants/routes', () => ({ route: { localApiServerlogs: '/local-api-server/logs', systemMonitor: '/system-monitor', appLogs: '/logs', }, })) vi.mock('@/lib/utils', () => ({ cn: (...classes: any[]) => classes.filter(Boolean).join(' '), })) describe('__root.tsx', () => { it('should render RootLayout component', () => { const Component = Route.component render() expect(screen.getByTestId('left-panel')).toBeDefined() expect(screen.getByTestId('app-updater')).toBeDefined() expect(screen.getByTestId('cortex-failure')).toBeDefined() expect(screen.getByTestId('tool-approval')).toBeDefined() expect(screen.getByTestId('out-of-context')).toBeDefined() expect(screen.getByTestId('outlet')).toBeDefined() }) it('should render AppLayout for normal routes', () => { const Component = Route.component render() expect(screen.getByTestId('left-panel')).toBeDefined() expect(screen.getByTestId('analytic-provider')).toBeDefined() }) it('should render LogsLayout for logs routes', async () => { // Re-mock useRouterState for logs route const { useRouterState } = await import('@tanstack/react-router') vi.mocked(useRouterState).mockReturnValue({ location: { pathname: '/local-api-server/logs' }, }) const Component = Route.component render() expect(screen.getByTestId('outlet')).toBeDefined() }) // Test removed due to mock complexity - component logic is well covered by other tests })