Files
dingtalk-workspace-cli/test/cli_compat/ding_test.go
T
2026-03-27 17:55:57 +08:00

134 lines
4.4 KiB
Go

package cli_compat_test
import (
"testing"
)
// ── message send ────────────────────────────────────────────
func TestDingMessageSend_should_call_send_ding_message(t *testing.T) {
cap := setupTestDeps(t, "ding")
root := buildRoot()
err := execCmd(t, root, []string{"ding", "message", "send"}, map[string]string{
"robot-code": "RC001",
"users": "userId1,userId2",
"content": "请查看",
})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
assertToolName(t, cap, "send_ding_message")
assertToolArg(t, cap, "robotCode", "RC001")
assertToolArg(t, cap, "content", "请查看")
}
func TestDingMessageSend_should_parse_receiver_list(t *testing.T) {
cap := setupTestDeps(t, "ding")
root := buildRoot()
_ = execCmd(t, root, []string{"ding", "message", "send"}, map[string]string{
"robot-code": "R", "users": "u1,u2,u3", "content": "C",
})
assertToolArg(t, cap, "receiverUserIdList", []string{"u1", "u2", "u3"})
}
func TestDingMessageSend_should_use_sms_type(t *testing.T) {
cap := setupTestDeps(t, "ding")
root := buildRoot()
_ = execCmd(t, root, []string{"ding", "message", "send"}, map[string]string{
"robot-code": "R", "type": "sms", "users": "u1", "content": "C",
})
assertToolArg(t, cap, "remindType", 2)
}
func TestDingMessageSend_should_use_call_type(t *testing.T) {
cap := setupTestDeps(t, "ding")
root := buildRoot()
_ = execCmd(t, root, []string{"ding", "message", "send"}, map[string]string{
"robot-code": "R", "type": "call", "users": "u1", "content": "紧急告警",
})
assertToolArg(t, cap, "remindType", 3)
assertToolArg(t, cap, "content", "紧急告警")
}
func TestDingMessageSend_should_fallback_to_app_for_unknown_type(t *testing.T) {
cap := setupTestDeps(t, "ding")
root := buildRoot()
_ = execCmd(t, root, []string{"ding", "message", "send"}, map[string]string{
"robot-code": "R", "type": "unknown", "users": "u1", "content": "C",
})
assertToolArg(t, cap, "remindType", 1)
}
func TestDingMessageSend_should_trim_receiver_spaces(t *testing.T) {
cap := setupTestDeps(t, "ding")
root := buildRoot()
_ = execCmd(t, root, []string{"ding", "message", "send"}, map[string]string{
"robot-code": "R", "users": " u1 , u2 ", "content": "C",
})
assertToolArg(t, cap, "receiverUserIdList", []string{"u1", "u2"})
}
func TestDingMessageSend_should_make_single_call(t *testing.T) {
cap := setupTestDeps(t, "ding")
root := buildRoot()
_ = execCmd(t, root, []string{"ding", "message", "send"}, map[string]string{
"robot-code": "R", "users": "u1", "content": "C",
})
assertCallCount(t, cap, 1)
}
func TestDingMessageSend_should_not_call_mcp_in_dry_run(t *testing.T) {
cap := setupTestDepsWithDryRun(t, "ding")
root := buildRoot()
_ = execCmd(t, root, []string{"ding", "message", "send"}, map[string]string{
"robot-code": "R", "users": "u1", "content": "C",
})
assertCallCount(t, cap, 0)
}
// ── message recall ──────────────────────────────────────────
func TestDingMessageRecall_should_call_recall_ding_message(t *testing.T) {
cap := setupTestDeps(t, "ding")
root := buildRoot()
err := execCmd(t, root, []string{"ding", "message", "recall"}, map[string]string{
"robot-code": "RC001",
"id": "DING_MSG_001",
})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
assertToolName(t, cap, "recall_ding_message")
assertToolArg(t, cap, "robotCode", "RC001")
assertToolArg(t, cap, "openDingId", "DING_MSG_001")
}
func TestDingMessageRecall_should_handle_different_ids(t *testing.T) {
cap := setupTestDeps(t, "ding")
root := buildRoot()
_ = execCmd(t, root, []string{"ding", "message", "recall"}, map[string]string{
"robot-code": "R", "id": "MSG_XYZ",
})
assertToolArg(t, cap, "openDingId", "MSG_XYZ")
}
func TestDingMessageRecall_should_make_single_call(t *testing.T) {
cap := setupTestDeps(t, "ding")
root := buildRoot()
_ = execCmd(t, root, []string{"ding", "message", "recall"}, map[string]string{
"robot-code": "R", "id": "M1",
})
assertCallCount(t, cap, 1)
}
func TestDingMessageRecall_should_return_no_error(t *testing.T) {
_ = setupTestDeps(t, "ding")
root := buildRoot()
err := execCmd(t, root, []string{"ding", "message", "recall"}, map[string]string{
"robot-code": "R", "id": "M1",
})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
}