77 lines · 2.5 KB · TypeScript
RawDownload
import { DEFAULT_CLIENT_SETTINGS, DEFAULT_UNIFIED_SETTINGS } from "@t3tools/contracts";import {  createMemoryHistory,  createRootRoute,  createRouter,  RouterProvider,} from "@tanstack/react-router";import { act, StrictMode, type ReactNode } from "react";import { create, type ReactTestRenderer } from "react-test-renderer";import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test"; const { listBrowserImportSources } = vi.hoisted(() => ({  listBrowserImportSources: vi.fn().mockResolvedValue([]),})); vi.mock("../preview/previewBridge", () => ({  previewBridge: { listBrowserImportSources },}));vi.mock("../../env", () => ({ isElectron: true }));vi.mock("../../state/environments", () => ({  useEnvironments: () => ({ environments: [], isReady: true }),  usePrimaryEnvironment: () => null,}));vi.mock("../../hooks/useSettings", () => ({  PRIMARY_SETTINGS_UNAVAILABLE_MESSAGE: "Connect to an environment",  useClientSettings: (selector: (settings: typeof DEFAULT_CLIENT_SETTINGS) => unknown) =>    selector(DEFAULT_CLIENT_SETTINGS),  useClientSettingsHydrated: () => true,  usePrimarySettingsAvailable: () => true,  usePrimarySettings: () => DEFAULT_UNIFIED_SETTINGS,  useUpdatePrimarySettings: () => vi.fn(),}));vi.mock("./settingsLayout", async (importOriginal) => ({  ...(await importOriginal<typeof import("./settingsLayout")>()),  SettingsPageContainer: ({ children }: { children: ReactNode }) => children,})); import { IntegrationsSettingsPanel } from "./IntegrationsSettings"; let renderer: ReactTestRenderer | undefined; beforeEach(() => {  vi.stubGlobal("IS_REACT_ACT_ENVIRONMENT", true);  listBrowserImportSources.mockClear();}); afterEach(async () => {  await act(() => renderer?.unmount());  vi.unstubAllGlobals();}); async function openSettings() {  const router = createRouter({    routeTree: createRootRoute({ component: IntegrationsSettingsPanel }),    history: createMemoryHistory(),  });  await router.load();  await act(() => {    renderer = create(      <StrictMode>        <RouterProvider router={router} />      </StrictMode>,    );  });  expect(renderer!.root.findByType(IntegrationsSettingsPanel)).toBeDefined();} describe("Integrations browser discovery", () => {  it("does not scan browser files when entering or revisiting settings", async () => {    await openSettings();    expect(listBrowserImportSources).not.toHaveBeenCalled();     await act(() => renderer?.unmount());    await openSettings();    expect(listBrowserImportSources).not.toHaveBeenCalled();  });});