Files
clawgo/pkg/tools/message_process_test.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)
}
}