From 3f85c7fc2cfae53f52fe50a2c998c4c2c02766e4 Mon Sep 17 00:00:00 2001 From: mlogclub Date: Tue, 14 Apr 2026 09:58:08 +0800 Subject: [PATCH] feat: add unit tests for NewRuntimeStaticTool and ResolveToolMetadata functions --- internal/ai/runtime/tools/helper_test.go | 32 ++++++++++++++++++++++ internal/pkg/toolx/builtin_tools_test.go | 35 ++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 internal/ai/runtime/tools/helper_test.go create mode 100644 internal/pkg/toolx/builtin_tools_test.go diff --git a/internal/ai/runtime/tools/helper_test.go b/internal/ai/runtime/tools/helper_test.go new file mode 100644 index 0000000..9a38139 --- /dev/null +++ b/internal/ai/runtime/tools/helper_test.go @@ -0,0 +1,32 @@ +package tools + +import ( + "testing" + + "cs-agent/internal/pkg/toolx" +) + +func TestNewRuntimeStaticTool(t *testing.T) { + items := []string{ + toolx.GraphTriageServiceRequest.Code, + toolx.GraphAnalyzeConversation.Code, + toolx.GraphPrepareTicketDraft.Code, + toolx.GraphCreateTicketConfirm.Code, + toolx.GraphHandoffConversation.Code, + } + for _, item := range items { + tool := NewRuntimeStaticTool(item) + if tool == nil { + t.Fatalf("expected runtime static tool for %s", item) + } + if tool.Spec().Code != item { + t.Fatalf("unexpected tool code for %s: %s", item, tool.Spec().Code) + } + } +} + +func TestNewRuntimeStaticToolReturnsNilForUnknownTool(t *testing.T) { + if tool := NewRuntimeStaticTool("builtin/unknown_tool"); tool != nil { + t.Fatalf("expected nil tool for unknown tool code") + } +} diff --git a/internal/pkg/toolx/builtin_tools_test.go b/internal/pkg/toolx/builtin_tools_test.go new file mode 100644 index 0000000..dfa6782 --- /dev/null +++ b/internal/pkg/toolx/builtin_tools_test.go @@ -0,0 +1,35 @@ +package toolx + +import "testing" + +func TestResolveToolMetadata(t *testing.T) { + item := ResolveToolMetadata("builtin/create_ticket_with_confirmation", "") + if item.ToolCode != GraphCreateTicketConfirm.Code { + t.Fatalf("unexpected tool code: %s", item.ToolCode) + } + if item.ServerCode != GraphCreateTicketConfirm.ServerCode { + t.Fatalf("unexpected server code: %s", item.ServerCode) + } + if item.ToolName != GraphCreateTicketConfirm.Name { + t.Fatalf("unexpected tool name: %s", item.ToolName) + } + if item.SourceType != GraphCreateTicketConfirm.SourceType { + t.Fatalf("unexpected source type: %s", item.SourceType) + } +} + +func TestResolveToolMetadataFallsBackToName(t *testing.T) { + item := ResolveToolMetadata("mcp/demo_tool", "demo_tool") + if item.ToolCode != "mcp/demo_tool" { + t.Fatalf("unexpected tool code: %s", item.ToolCode) + } + if item.ServerCode != "" { + t.Fatalf("unexpected server code: %s", item.ServerCode) + } + if item.ToolName != "demo_tool" { + t.Fatalf("unexpected tool name: %s", item.ToolName) + } + if item.SourceType != "mcp" { + t.Fatalf("unexpected source type: %s", item.SourceType) + } +}