MCPcopy Index your code
hub / github.com/coder/coder / TestNewDynamicTool

Function TestNewDynamicTool

codersdk/chats_test.go:607–667  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

605}
606
607func TestNewDynamicTool(t *testing.T) {
608 t.Parallel()
609
610 type testArgs struct {
611 Query string `json:"query"`
612 }
613
614 t.Run("CorrectSchema", func(t *testing.T) {
615 t.Parallel()
616
617 tool := codersdk.NewDynamicTool(
618 "search", "search things",
619 func(_ context.Context, args testArgs, _ codersdk.DynamicToolCall) (codersdk.DynamicToolResponse, error) {
620 return codersdk.DynamicToolResponse{Content: args.Query}, nil
621 },
622 )
623
624 require.Equal(t, "search", tool.Name)
625 require.Equal(t, "search things", tool.Description)
626 require.Contains(t, string(tool.InputSchema), `"query"`)
627 require.Contains(t, string(tool.InputSchema), `"string"`)
628 })
629
630 t.Run("HandlerReceivesArgs", func(t *testing.T) {
631 t.Parallel()
632
633 var received testArgs
634 tool := codersdk.NewDynamicTool(
635 "search", "search things",
636 func(_ context.Context, args testArgs, _ codersdk.DynamicToolCall) (codersdk.DynamicToolResponse, error) {
637 received = args
638 return codersdk.DynamicToolResponse{Content: "ok"}, nil
639 },
640 )
641
642 resp, err := tool.Handler(context.Background(), codersdk.DynamicToolCall{
643 Args: `{"query":"hello"}`,
644 })
645 require.NoError(t, err)
646 require.Equal(t, "ok", resp.Content)
647 require.Equal(t, "hello", received.Query)
648 })
649
650 t.Run("InvalidJSONArgs", func(t *testing.T) {
651 t.Parallel()
652
653 tool := codersdk.NewDynamicTool(
654 "search", "search things",
655 func(_ context.Context, args testArgs, _ codersdk.DynamicToolCall) (codersdk.DynamicToolResponse, error) {
656 return codersdk.DynamicToolResponse{Content: "should not reach"}, nil
657 },
658 )
659
660 resp, err := tool.Handler(context.Background(), codersdk.DynamicToolCall{
661 Args: "not-json",
662 })
663 require.NoError(t, err)
664 require.True(t, resp.IsError)

Callers

nothing calls this directly

Calls 5

NewDynamicToolFunction · 0.92
RunMethod · 0.65
EqualMethod · 0.45
ContainsMethod · 0.45
HandlerMethod · 0.45

Tested by

no test coverage detected