diff --git a/ui/src/components/AgentConfigForm.render.test.tsx b/ui/src/components/AgentConfigForm.render.test.tsx new file mode 100644 index 0000000000..9d94ed5073 --- /dev/null +++ b/ui/src/components/AgentConfigForm.render.test.tsx @@ -0,0 +1,272 @@ +// @vitest-environment jsdom + +import { createRoot, type Root } from "react-dom/client"; +import { act } from "react"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import type { Agent, Environment } from "@paperclipai/shared"; +import { TooltipProvider } from "@/components/ui/tooltip"; +import { AgentConfigForm } from "./AgentConfigForm"; + +const mockAgentsApi = vi.hoisted(() => ({ + adapterModels: vi.fn(), + detectModel: vi.fn(), + list: vi.fn(), +})); + +const mockEnvironmentsApi = vi.hoisted(() => ({ + list: vi.fn(), +})); + +const mockInstanceSettingsApi = vi.hoisted(() => ({ + get: vi.fn(), + getExperimental: vi.fn(), + getGeneral: vi.fn(), +})); + +const mockSecretsApi = vi.hoisted(() => ({ + list: vi.fn(), +})); + +vi.mock("../api/agents", () => ({ + agentsApi: mockAgentsApi, +})); + +vi.mock("../api/environments", () => ({ + environmentsApi: mockEnvironmentsApi, +})); + +vi.mock("../api/instanceSettings", () => ({ + instanceSettingsApi: mockInstanceSettingsApi, +})); + +vi.mock("../api/secrets", () => ({ + secretsApi: mockSecretsApi, +})); + +vi.mock("../context/CompanyContext", () => ({ + useCompany: () => ({ + companies: [{ id: "company-1", name: "Paperclip" }], + selectedCompanyId: "company-1", + selectedCompany: { id: "company-1", name: "Paperclip" }, + selectionSource: "bootstrap", + loading: false, + error: null, + setSelectedCompanyId: vi.fn(), + reloadCompanies: vi.fn(), + createCompany: vi.fn(), + }), +})); + +vi.mock("../adapters", () => ({ + getUIAdapter: () => ({ + type: "codex_local", + label: "Codex", + ConfigFields: () => null, + buildAdapterConfig: () => ({}), + parseStdoutLine: () => [], + }), +})); + +vi.mock("../adapters/use-adapter-capabilities", () => ({ + useAdapterCapabilities: () => () => ({ + supportsInstructionsBundle: true, + supportsSkills: true, + supportsLocalAgentJwt: true, + requiresMaterializedRuntimeSkills: false, + supportsModelProfiles: true, + }), +})); + +vi.mock("../adapters/use-disabled-adapters", () => ({ + useDisabledAdaptersSync: () => [], +})); + +vi.mock("./MarkdownEditor", () => ({ + MarkdownEditor: ({ + value, + onChange, + placeholder, + }: { + value: string; + onChange: (value: string) => void; + placeholder?: string; + }) => ( +