Unit tests for shell classifier, executor, tool calling detection, and frontend components. - Add detectToolCalling.test.ts (136 lines) - Add aiProvidersOllamaDropdown.test.tsx (129 lines) - Add selectDropdownViewport.test.tsx (124 lines) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
137 lines
4.0 KiB
TypeScript
137 lines
4.0 KiB
TypeScript
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
import * as tauriCommands from "@/lib/tauriCommands";
|
|
|
|
// Mock Tauri invoke
|
|
vi.mock("@tauri-apps/api/core", () => ({
|
|
invoke: vi.fn(),
|
|
}));
|
|
|
|
describe("detectToolCallingSupportCmd", () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
it("should be defined and callable", () => {
|
|
expect(tauriCommands.detectToolCallingSupportCmd).toBeDefined();
|
|
expect(typeof tauriCommands.detectToolCallingSupportCmd).toBe("function");
|
|
});
|
|
|
|
it("should accept a ProviderConfig parameter", () => {
|
|
const mockConfig: tauriCommands.ProviderConfig = {
|
|
name: "test-provider",
|
|
provider_type: "openai",
|
|
api_url: "https://api.example.com",
|
|
api_key: "test-key",
|
|
model: "gpt-4",
|
|
max_tokens: 4096,
|
|
temperature: 0.7,
|
|
supports_tool_calling: false,
|
|
};
|
|
|
|
// Should not throw when called with valid config
|
|
expect(() => tauriCommands.detectToolCallingSupportCmd(mockConfig)).not.toThrow();
|
|
});
|
|
|
|
it("should return a Promise<boolean>", async () => {
|
|
const { invoke } = await import("@tauri-apps/api/core");
|
|
vi.mocked(invoke).mockResolvedValue(true);
|
|
|
|
const mockConfig: tauriCommands.ProviderConfig = {
|
|
name: "test-provider",
|
|
provider_type: "openai",
|
|
api_url: "https://api.example.com",
|
|
api_key: "test-key",
|
|
model: "gpt-4",
|
|
max_tokens: 4096,
|
|
temperature: 0.7,
|
|
supports_tool_calling: false,
|
|
};
|
|
|
|
const result = tauriCommands.detectToolCallingSupportCmd(mockConfig);
|
|
expect(result).toBeInstanceOf(Promise);
|
|
|
|
const value = await result;
|
|
expect(typeof value).toBe("boolean");
|
|
});
|
|
|
|
it("should call invoke with correct command name", async () => {
|
|
const { invoke } = await import("@tauri-apps/api/core");
|
|
vi.mocked(invoke).mockResolvedValue(true);
|
|
|
|
const mockConfig: tauriCommands.ProviderConfig = {
|
|
name: "test-provider",
|
|
provider_type: "openai",
|
|
api_url: "https://api.example.com",
|
|
api_key: "test-key",
|
|
model: "gpt-4",
|
|
max_tokens: 4096,
|
|
temperature: 0.7,
|
|
supports_tool_calling: false,
|
|
};
|
|
|
|
await tauriCommands.detectToolCallingSupportCmd(mockConfig);
|
|
|
|
expect(invoke).toHaveBeenCalledWith("detect_tool_calling_support", {
|
|
providerConfig: mockConfig,
|
|
});
|
|
});
|
|
|
|
it("should handle true response correctly", async () => {
|
|
const { invoke } = await import("@tauri-apps/api/core");
|
|
vi.mocked(invoke).mockResolvedValue(true);
|
|
|
|
const mockConfig: tauriCommands.ProviderConfig = {
|
|
name: "test-provider",
|
|
provider_type: "openai",
|
|
api_url: "https://api.example.com",
|
|
api_key: "test-key",
|
|
model: "gpt-4",
|
|
max_tokens: 4096,
|
|
temperature: 0.7,
|
|
supports_tool_calling: false,
|
|
};
|
|
|
|
const result = await tauriCommands.detectToolCallingSupportCmd(mockConfig);
|
|
expect(result).toBe(true);
|
|
});
|
|
|
|
it("should handle false response correctly", async () => {
|
|
const { invoke } = await import("@tauri-apps/api/core");
|
|
vi.mocked(invoke).mockResolvedValue(false);
|
|
|
|
const mockConfig: tauriCommands.ProviderConfig = {
|
|
name: "test-provider",
|
|
provider_type: "openai",
|
|
api_url: "https://api.example.com",
|
|
api_key: "test-key",
|
|
model: "gpt-4",
|
|
max_tokens: 4096,
|
|
temperature: 0.7,
|
|
supports_tool_calling: false,
|
|
};
|
|
|
|
const result = await tauriCommands.detectToolCallingSupportCmd(mockConfig);
|
|
expect(result).toBe(false);
|
|
});
|
|
|
|
it("should propagate errors from backend", async () => {
|
|
const { invoke } = await import("@tauri-apps/api/core");
|
|
vi.mocked(invoke).mockRejectedValue(new Error("Connection failed"));
|
|
|
|
const mockConfig: tauriCommands.ProviderConfig = {
|
|
name: "test-provider",
|
|
provider_type: "openai",
|
|
api_url: "https://api.example.com",
|
|
api_key: "test-key",
|
|
model: "gpt-4",
|
|
max_tokens: 4096,
|
|
temperature: 0.7,
|
|
supports_tool_calling: false,
|
|
};
|
|
|
|
await expect(tauriCommands.detectToolCallingSupportCmd(mockConfig)).rejects.toThrow(
|
|
"Connection failed"
|
|
);
|
|
});
|
|
});
|