logancyang_obsidian-copilot/src/agentMode/backends/registry.test.ts
Zero Liu c2ac27edef
feat(agent-mode): introduce Agent Mode feature
Squashed from 8 commits on zero/acp-test:
- feat(agent-mode): introduce Agent Mode feature (squashed)
- Fix eslint
- hide add context button
- chore: ban parent-relative imports and rewrite existing ones to @/ aliases
- wip(agent-mode): skills management + slash command revamp
- fix(agent-mode): initialize SkillManager before preload probes
- fix(build): align svgr jsxRuntime with tsconfig classic jsx
- fix(test): stub ItemView/WorkspaceLeaf in ChatSingleMessage obsidian mock
2026-05-20 19:05:41 -07:00

42 lines
1.6 KiB
TypeScript

import type { CopilotSettings } from "@/settings/model";
import { getActiveBackendDescriptor, listBackendDescriptors } from "./registry";
import { OpencodeBackendDescriptor } from "./opencode/descriptor";
jest.mock("@/agentMode/backends/opencode/OpencodeInstallModal", () => ({
OpencodeInstallModal: class {},
}));
jest.mock("@/components/modals/ConfirmModal", () => ({ ConfirmModal: class {} }));
jest.mock("@/components/ui/setting-item", () => ({ SettingItem: () => null }));
jest.mock("@/components/ui/button", () => ({ Button: () => null }));
jest.mock("@/components/ui/input", () => ({ Input: () => null }));
jest.mock("@/logger", () => ({ logInfo: jest.fn(), logWarn: jest.fn(), logError: jest.fn() }));
jest.mock("obsidian", () => ({
Modal: class {},
Notice: class {},
Platform: { isMobile: false },
}));
describe("backendRegistry", () => {
const baseSettings = (activeBackend?: string): CopilotSettings =>
({
agentMode: {
enabled: true,
byok: {},
mcpServers: [],
activeBackend: activeBackend ?? "opencode",
backends: { opencode: {} },
},
}) as unknown as CopilotSettings;
it("returns the OpenCode descriptor by default", () => {
expect(getActiveBackendDescriptor(baseSettings())).toBe(OpencodeBackendDescriptor);
});
it("falls back to OpenCode when an unknown backend is selected", () => {
expect(getActiveBackendDescriptor(baseSettings("nonexistent"))).toBe(OpencodeBackendDescriptor);
});
it("listBackendDescriptors includes OpenCode", () => {
expect(listBackendDescriptors()).toContain(OpencodeBackendDescriptor);
});
});