mirror of
https://github.com/YspCoder/clawgo.git
synced 2026-04-14 12:27:29 +08:00
75 lines
1.9 KiB
Go
75 lines
1.9 KiB
Go
package tools
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/YspCoder/clawgo/pkg/nodes"
|
|
"github.com/YspCoder/clawgo/pkg/providers"
|
|
)
|
|
|
|
func TestSessionsToolParsesStringArguments(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tool := NewSessionsTool(func(limit int) []SessionInfo {
|
|
return []SessionInfo{
|
|
{Key: "cron:1", Kind: "cron", UpdatedAt: time.Now()},
|
|
{Key: "main:1", Kind: "main", UpdatedAt: time.Now()},
|
|
}
|
|
}, func(key string, limit int) []providers.Message { return nil })
|
|
|
|
out, err := tool.Execute(context.Background(), map[string]interface{}{
|
|
"action": "list",
|
|
"limit": "1",
|
|
"active_minutes": "60",
|
|
"kinds": "cron",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("sessions execute failed: %v", err)
|
|
}
|
|
if !strings.Contains(out, "cron:1") || strings.Contains(out, "main:1") {
|
|
t.Fatalf("unexpected filtered output: %s", out)
|
|
}
|
|
}
|
|
|
|
func TestNodesToolParsesStringDurationAndArtifactPaths(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
manager := nodes.NewManager()
|
|
manager.Upsert(nodes.NodeInfo{
|
|
ID: "local",
|
|
Online: true,
|
|
Capabilities: nodes.Capabilities{
|
|
Camera: true,
|
|
},
|
|
})
|
|
manager.RegisterHandler("local", func(req nodes.Request) nodes.Response {
|
|
return nodes.Response{
|
|
OK: true,
|
|
Code: "ok",
|
|
Node: "local",
|
|
Action: req.Action,
|
|
Payload: map[string]interface{}{
|
|
"artifacts": []map[string]interface{}{
|
|
{"kind": "video", "path": "/tmp/demo.mp4"},
|
|
},
|
|
},
|
|
}
|
|
})
|
|
tool := NewNodesTool(manager, &nodes.Router{Relay: &nodes.HTTPRelayTransport{Manager: manager}}, "")
|
|
out, err := tool.Execute(context.Background(), map[string]interface{}{
|
|
"action": "camera_clip",
|
|
"node": "local",
|
|
"duration_ms": "1000",
|
|
"artifact_paths": "memory/demo.md",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("nodes execute failed: %v", err)
|
|
}
|
|
if !strings.Contains(out, `"ok":true`) {
|
|
t.Fatalf("unexpected output: %s", out)
|
|
}
|
|
}
|