diff options
Diffstat (limited to 'packages/core/tests/tools/registry.test.ts')
| -rw-r--r-- | packages/core/tests/tools/registry.test.ts | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/packages/core/tests/tools/registry.test.ts b/packages/core/tests/tools/registry.test.ts new file mode 100644 index 0000000..b6f1fca --- /dev/null +++ b/packages/core/tests/tools/registry.test.ts @@ -0,0 +1,50 @@ +import { describe, expect, it } from "vitest"; +import { z } from "zod"; +import { createToolRegistry } from "../../src/tools/registry.js"; +import type { ToolDefinition } from "../../src/types/index.js"; + +const mockTool: ToolDefinition = { + name: "mock_tool", + description: "A mock tool for testing", + parameters: z.object({ input: z.string() }), + execute: async (_args) => "mock result", +}; + +const anotherTool: ToolDefinition = { + name: "another_tool", + description: "Another mock tool", + parameters: z.object({ value: z.number() }), + execute: async (_args) => "another result", +}; + +describe("createToolRegistry", () => { + it("returns all tools via getTools()", () => { + const registry = createToolRegistry([mockTool, anotherTool]); + const tools = registry.getTools(); + expect(tools).toHaveLength(2); + expect(tools.map((t) => t.name)).toContain("mock_tool"); + expect(tools.map((t) => t.name)).toContain("another_tool"); + }); + + it("retrieves specific tool by name", () => { + const registry = createToolRegistry([mockTool, anotherTool]); + const tool = registry.getTool("mock_tool"); + expect(tool).toBeDefined(); + expect(tool?.name).toBe("mock_tool"); + }); + + it("returns undefined for unknown tool", () => { + const registry = createToolRegistry([mockTool]); + expect(registry.getTool("nonexistent")).toBeUndefined(); + }); + + it("getAISDKTools returns correct format", () => { + const registry = createToolRegistry([mockTool, anotherTool]); + const aiTools = registry.getAISDKTools(); + expect(aiTools).toHaveProperty("mock_tool"); + expect(aiTools).toHaveProperty("another_tool"); + // Each should have description and parameters (AI SDK tool format) + expect(aiTools.mock_tool).toHaveProperty("description"); + expect(aiTools.mock_tool).toHaveProperty("parameters"); + }); +}); |
