/* eslint-disable ghost/sort-imports-es6-autofix/sort-imports-es6 */ import React from 'react'; import '@testing-library/jest-dom'; import {render, screen} from '@testing-library/react'; import {TopLevelFrameworkProps} from '@tryghost/admin-x-framework'; import {ShadeAppProps} from '@tryghost/shade'; import App from '../../src/App'; import {vi} from 'vitest'; // Interface matching the one in App.tsx interface AppProps { framework: TopLevelFrameworkProps; designSystem: ShadeAppProps; } // Mock the dependencies vi.mock('@tryghost/admin-x-framework', () => ({ FrameworkProvider: ({children}: {children: React.ReactNode}) =>
{children}
, RouterProvider: ({children}: {children: React.ReactNode}) =>
{children}
, AppProvider: ({children}: {children: React.ReactNode}) =>
{children}
, Outlet: () =>
Outlet content
})); vi.mock('@tryghost/shade', () => ({ ShadeApp: ({children}: {children: React.ReactNode}) =>
{children}
, formatNumber: (value: number) => `${value}`, formatDisplayDate: (date: string) => date, formatPercentage: (value: number) => `${Math.round(value * 100)}%`, formatDuration: (seconds: number) => `${seconds}s` })); vi.mock('../../src/providers/GlobalDataProvider', () => ({ default: ({children}: {children: React.ReactNode}) =>
{children}
})); describe('App Component', function () { it('renders without crashing', function () { // Use type assertion to bypass strict type checking for the test const mockProps = { designSystem: {darkMode: false, fetchKoenigLexical: null}, framework: {} } as unknown as AppProps; render(); // Verify the component tree renders expect(screen.getByTestId('framework-provider')).toBeInTheDocument(); expect(screen.getByTestId('app-provider')).toBeInTheDocument(); expect(screen.getByTestId('router-provider')).toBeInTheDocument(); expect(screen.getByTestId('global-data-provider')).toBeInTheDocument(); expect(screen.getByTestId('shade-app')).toBeInTheDocument(); expect(screen.getByTestId('outlet')).toBeInTheDocument(); }); });