import { vi } from "vitest"; import React from "react"; import { render, waitFor } from "@testing-library/react"; import { useFrontendTool } from "../use-frontend-tool"; // Track what gets passed to the v2 hook let lastV2ToolCall: any = null; vi.mock("../../v2", () => ({ useFrontendTool: vi.fn((tool: any) => { lastV2ToolCall = tool; }), })); describe("useFrontendTool available passthrough (v1 → v2)", () => { beforeEach(() => { lastV2ToolCall = null; }); it("converts available: 'disabled' to false for v2", () => { const Component: React.FC = () => { useFrontendTool({ name: "testTool", description: "Test tool", available: "disabled", parameters: [], handler: async () => "done", }); return null; }; render(); expect(lastV2ToolCall).toBeDefined(); expect(lastV2ToolCall.available).toBe(false); }); it("converts available: 'enabled' to true for v2", () => { const Component: React.FC = () => { useFrontendTool({ name: "testTool", description: "Test tool", available: "enabled", parameters: [], handler: async () => "done", }); return null; }; render(); expect(lastV2ToolCall).toBeDefined(); expect(lastV2ToolCall.available).toBe(true); }); it("does not include available when not specified", () => { const Component: React.FC = () => { useFrontendTool({ name: "testTool", description: "Test tool", parameters: [], handler: async () => "done", }); return null; }; render(); expect(lastV2ToolCall).toBeDefined(); expect(lastV2ToolCall.available).toBeUndefined(); }); });