Pass GetPromptParams as needed, in case that type ever gets additional properties. Change-Id: I83fa37bb2af5633a8c2bcdc47a85c3030dfe70fb Reviewed-on: https://go-review.googlesource.com/c/tools/+/674895 Auto-Submit: Jonathan Amsterdam <jba@google.com> Reviewed-by: Sam Thanawalla <samthanawalla@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
// Copyright 2025 The Go MCP SDK Authors. All rights reserved.
|
|
// Use of this source code is governed by an MIT-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package mcp_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/google/go-cmp/cmp"
|
|
"github.com/modelcontextprotocol/go-sdk/mcp"
|
|
)
|
|
|
|
// testPromptHandler is used for type inference in TestNewPrompt.
|
|
func testPromptHandler[T any](context.Context, *mcp.ServerSession, T, *mcp.GetPromptParams) (*mcp.GetPromptResult, error) {
|
|
panic("not implemented")
|
|
}
|
|
|
|
func TestNewPrompt(t *testing.T) {
|
|
tests := []struct {
|
|
prompt *mcp.ServerPrompt
|
|
want []*mcp.PromptArgument
|
|
}{
|
|
{
|
|
mcp.NewPrompt("empty", "", testPromptHandler[struct{}]),
|
|
nil,
|
|
},
|
|
{
|
|
mcp.NewPrompt("add_arg", "", testPromptHandler[struct{}], mcp.Argument("x")),
|
|
[]*mcp.PromptArgument{{Name: "x"}},
|
|
},
|
|
{
|
|
mcp.NewPrompt("combo", "", testPromptHandler[struct {
|
|
Name string `json:"name"`
|
|
Country string `json:"country,omitempty"`
|
|
State string
|
|
}],
|
|
mcp.Argument("name", mcp.Description("the person's name")),
|
|
mcp.Argument("State", mcp.Required(false))),
|
|
[]*mcp.PromptArgument{
|
|
{Name: "State"},
|
|
{Name: "country"},
|
|
{Name: "name", Required: true, Description: "the person's name"},
|
|
},
|
|
},
|
|
}
|
|
for _, test := range tests {
|
|
if diff := cmp.Diff(test.want, test.prompt.Prompt.Arguments); diff != "" {
|
|
t.Errorf("NewPrompt(%v) mismatch (-want +got):\n%s", test.prompt.Prompt.Name, diff)
|
|
}
|
|
}
|
|
}
|