test(chat): close IM shortcut coverage gaps
This commit is contained in:
1 parent
f3231ed2a8
commit
33df6ee794
16 files changed
+1977
-34
No files matched your search
@@ -27,6 +27,7 @@ type crossPlatformCoverageCaller struct {
|
||||
args map[string]any
|
||||
token string
|
||||
dryRun bool
|
||||
reads int
|
||||
}
|
||||
|
||||
func (c *crossPlatformCoverageCaller) CallTool(_ context.Context, _, _ string, args map[string]any) (*edition.ToolResult, error) {
|
||||
@@ -44,6 +45,16 @@ func (c *crossPlatformCoverageCaller) CallToolWithToken(
|
||||
return &edition.ToolResult{}, nil
|
||||
}
|
||||
|
||||
func (c *crossPlatformCoverageCaller) CallReadTool(
|
||||
_ context.Context,
|
||||
_, _ string,
|
||||
args map[string]any,
|
||||
) (*edition.ToolResult, error) {
|
||||
c.reads++
|
||||
c.args = args
|
||||
return &edition.ToolResult{}, nil
|
||||
}
|
||||
|
||||
func (*crossPlatformCoverageCaller) Format() string { return "json" }
|
||||
func (c *crossPlatformCoverageCaller) DryRun() bool { return c.dryRun }
|
||||
func (*crossPlatformCoverageCaller) Fields() string { return "id,name" }
|
||||
@@ -129,6 +140,51 @@ func TestCrossPlatformCoverageRecordingToolCaller(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestCrossPlatformCoverageRecordingReadToolCaller(t *testing.T) {
|
||||
t.Setenv("DWS_CONFIG_DIR", t.TempDir())
|
||||
t.Setenv("DWS_USAGE_TRACKING", "1")
|
||||
|
||||
inner := &crossPlatformCoverageCaller{dryRun: true}
|
||||
caller := newRecordingToolCaller(inner)
|
||||
readCaller, ok := caller.(edition.ReadToolCaller)
|
||||
if !ok {
|
||||
t.Fatal("recording caller dropped read-only capability")
|
||||
}
|
||||
if _, err := readCaller.CallReadTool(
|
||||
context.Background(),
|
||||
"im",
|
||||
"search_groups",
|
||||
map[string]any{"open_conversation_id": "cid_x"},
|
||||
); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if inner.reads != 1 || inner.args["open_conversation_id"] != "cid_x" {
|
||||
t.Fatalf("read forwarding = reads %d args %#v", inner.reads, inner.args)
|
||||
}
|
||||
records, err := usage.Read()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(records) != 1 || !records[0].OK {
|
||||
t.Fatalf("real read must be recorded as successful: %#v", records)
|
||||
}
|
||||
|
||||
withoutRead := recordingToolCaller{inner: nonReadToolCaller{}}
|
||||
if _, err := withoutRead.CallReadTool(context.Background(), "im", "search_groups", nil); err == nil {
|
||||
t.Fatal("recording caller accepted an inner caller without read support")
|
||||
}
|
||||
}
|
||||
|
||||
type nonReadToolCaller struct{}
|
||||
|
||||
func (nonReadToolCaller) CallTool(context.Context, string, string, map[string]any) (*edition.ToolResult, error) {
|
||||
return &edition.ToolResult{}, nil
|
||||
}
|
||||
func (nonReadToolCaller) Format() string { return "json" }
|
||||
func (nonReadToolCaller) DryRun() bool { return false }
|
||||
func (nonReadToolCaller) Fields() string { return "" }
|
||||
func (nonReadToolCaller) JQ() string { return "" }
|
||||
|
||||
func TestCrossPlatformCoverageRootPublishesShortcutCommands(t *testing.T) {
|
||||
configDir := t.TempDir()
|
||||
t.Setenv("DWS_CONFIG_DIR", configDir)
|
||||
|
||||
Reference in new issue
Block a user