mirror of
https://github.com/YspCoder/clawgo.git
synced 2026-04-13 03:17:28 +08:00
69 lines
1.7 KiB
Go
69 lines
1.7 KiB
Go
package tools
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/YspCoder/clawgo/pkg/bus"
|
|
)
|
|
|
|
func TestMessageToolParsesStringAliases(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tool := NewMessageTool()
|
|
tool.SetContext("telegram", "chat-1")
|
|
|
|
called := false
|
|
tool.SetSendCallback(func(channel, chatID, action, content, media, messageID, emoji string, buttons [][]bus.Button) error {
|
|
called = true
|
|
if channel != "telegram" || chatID != "chat-2" {
|
|
t.Fatalf("unexpected target: %s %s", channel, chatID)
|
|
}
|
|
if action != "send" || content != "hello" || media != "/tmp/a.png" {
|
|
t.Fatalf("unexpected payload: %s %s %s", action, content, media)
|
|
}
|
|
if len(buttons) != 1 || len(buttons[0]) != 1 || buttons[0][0].Text != "Open" {
|
|
t.Fatalf("unexpected buttons: %#v", buttons)
|
|
}
|
|
return nil
|
|
})
|
|
|
|
out, err := tool.Execute(context.Background(), map[string]interface{}{
|
|
"message": "hello",
|
|
"to": "chat-2",
|
|
"path": "/tmp/a.png",
|
|
"buttons": []interface{}{
|
|
[]interface{}{
|
|
map[string]interface{}{"text": "Open", "data": "open"},
|
|
},
|
|
},
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("execute failed: %v", err)
|
|
}
|
|
if !called || !strings.Contains(out, "Message action=send") {
|
|
t.Fatalf("unexpected output: %s", out)
|
|
}
|
|
}
|
|
|
|
func TestProcessToolParsesStringIntegers(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
pm := NewProcessManager(t.TempDir())
|
|
tool := NewProcessTool(pm)
|
|
|
|
out, err := tool.Execute(context.Background(), map[string]interface{}{
|
|
"action": "list",
|
|
"offset": "10",
|
|
"limit": "20",
|
|
"timeout_ms": "5",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("execute failed: %v", err)
|
|
}
|
|
if !strings.HasPrefix(strings.TrimSpace(out), "[") {
|
|
t.Fatalf("expected json list output, got %s", out)
|
|
}
|
|
}
|