import { render, screen } from "@testing-library/react" import { describe, expect, it, vi } from "vitest" import { Providers } from "../providers" // Мокаем все провайдеры vi.mock("@/features/media-studio/services/tauri-mock-provider", () => ({ TauriMockProvider: ({ children }: { children: React.ReactNode }) => (
{children}
), })) vi.mock("@/i18n/services/i18n-provider", () => ({ I18nProvider: ({ children }: { children: React.ReactNode }) =>
{children}
, })) vi.mock("next-themes", () => ({ ThemeProvider: ({ children }: { children: React.ReactNode }) => (
{children}
), })) vi.mock("@/features/modals/services/modal-provider", () => ({ ModalProvider: ({ children }: { children: React.ReactNode }) =>
{children}
, })) vi.mock("@/features/app-state/services/app-provider", () => ({ AppProvider: ({ children }: { children: React.ReactNode }) =>
{children}
, })) vi.mock("@/features/browser/services/browser-state-provider", () => ({ BrowserStateProvider: ({ children }: { children: React.ReactNode }) => (
{children}
), })) vi.mock("@/features/project-settings/services/project-settings-provider", () => ({ ProjectSettingsProvider: ({ children }: { children: React.ReactNode }) => (
{children}
), })) vi.mock("@/features/user-settings", () => ({ UserSettingsProvider: ({ children }: { children: React.ReactNode }) => (
{children}
), })) vi.mock("@/features/keyboard-shortcuts", () => ({ ShortcutsProvider: ({ children }: { children: React.ReactNode }) => (
{children}
), })) vi.mock("@/features/resources/services/resources-provider", () => ({ ResourcesProvider: ({ children }: { children: React.ReactNode }) => (
{children}
), })) vi.mock("@/features/timeline/services/timeline-provider", () => ({ TimelineProvider: ({ children }: { children: React.ReactNode }) => (
{children}
), })) vi.mock("@/features/video-player/services/player-provider", () => ({ PlayerProvider: ({ children }: { children: React.ReactNode }) =>
{children}
, })) vi.mock("@/features/ai-chat/services/chat-provider", () => ({ ChatProvider: ({ children }: { children: React.ReactNode }) =>
{children}
, })) vi.mock("@/features/ai-content-intelligence", () => ({ AIIntelligenceProvider: ({ children }: { children: React.ReactNode }) => (
{children}
), })) describe("Providers", () => { it("должен рендерить все провайдеры в правильном порядке", () => { render(
Test Content
, ) // Проверяем наличие основных провайдеров expect(screen.getByTestId("tauri-mock-provider")).toBeInTheDocument() expect(screen.getByTestId("i18n-provider")).toBeInTheDocument() expect(screen.getByTestId("next-theme-provider")).toBeInTheDocument() expect(screen.getByTestId("app-provider")).toBeInTheDocument() expect(screen.getByTestId("browser-state-provider")).toBeInTheDocument() expect(screen.getByTestId("user-settings-provider")).toBeInTheDocument() expect(screen.getByTestId("resources-provider")).toBeInTheDocument() expect(screen.getByTestId("ai-intelligence-provider")).toBeInTheDocument() // Проверяем что дочерний компонент отрендерился expect(screen.getByTestId("test-child")).toBeInTheDocument() expect(screen.getByText("Test Content")).toBeInTheDocument() }) it("должен правильно вкладывать провайдеры друг в друга", () => { const { container } = render(
Test
, ) // Проверяем вложенность некоторых провайдеров const tauriProvider = container.querySelector('[data-testid="tauri-mock-provider"]') const themeProvider = container.querySelector('[data-testid="next-theme-provider"]') const userSettingsProvider = container.querySelector('[data-testid="user-settings-provider"]') expect(tauriProvider).toBeInTheDocument() expect(themeProvider).toBeInTheDocument() expect(userSettingsProvider).toBeInTheDocument() }) it("должен передавать children через все провайдеры", () => { const TestComponent = () =>
Nested Content
render( , ) expect(screen.getByTestId("nested-component")).toBeInTheDocument() expect(screen.getByText("Nested Content")).toBeInTheDocument() }) })