将 test/pre-mcp-discovery 分支上多位同学的能力改动整体合入 main, 服务发现端点保持生产 https://mcp.dingtalk.com,未携带分支上的预发改动。 主要内容: - 修雨域(chat / report / todo / contact / mail)对齐 wukong 基线 (#355) - DWS 内容生产能力增强 (#387)、文档导出与 OA 对齐 (#362 #388 #390) - envelope 注册 cli.Aliases 为 cobra aliases、命令结构与 JSON 解析优化 - skills 多包同步 wukong 对齐内容(attendance/calendar/minutes/oa/sheet 等) - product/oa 进一步对齐 wukong 排除项:未携带 566b4e1(test: point service discovery to pre-mcp.dingtalk.com); 以下 4 个常量保持生产:skill_command.go / auth/endpoints.go / cli/loader.go / market/registry.go。 Co-authored-by: john <32427341+wqyenjoy@users.noreply.github.com> Co-authored-by: wxianfeng <wang.fl1429@gmail.com>
77 lines
2.3 KiB
Go
77 lines
2.3 KiB
Go
// Copyright 2026 Alibaba Group
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package helpers
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/DingTalk-Real-AI/dingtalk-workspace-cli/internal/executor"
|
|
)
|
|
|
|
type devdocCommandRunner struct {
|
|
last executor.Invocation
|
|
}
|
|
|
|
func (r *devdocCommandRunner) Run(_ context.Context, invocation executor.Invocation) (executor.Result, error) {
|
|
r.last = invocation
|
|
return executor.Result{Invocation: invocation}, nil
|
|
}
|
|
|
|
func TestDevdocArticleSearchAcceptsWukongKeywordAlias(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
runner := &devdocCommandRunner{}
|
|
cmd := devdocHandler{}.Command(runner)
|
|
var out, errOut bytes.Buffer
|
|
cmd.SetOut(&out)
|
|
cmd.SetErr(&errOut)
|
|
cmd.SetArgs([]string{"article", "search", "--keyword", "openConversationId", "--page", "2", "--size", "5"})
|
|
|
|
if err := cmd.Execute(); err != nil {
|
|
t.Fatalf("Execute() error = %v\nstderr:\n%s", err, errOut.String())
|
|
}
|
|
if runner.last.Tool != "search_open_platform_docs" {
|
|
t.Fatalf("tool = %q, want search_open_platform_docs", runner.last.Tool)
|
|
}
|
|
if got := runner.last.Params["keyword"]; got != "openConversationId" {
|
|
t.Fatalf("keyword = %#v, want openConversationId", got)
|
|
}
|
|
if got := runner.last.Params["page"]; got != 2 {
|
|
t.Fatalf("page = %#v, want 2", got)
|
|
}
|
|
if got := runner.last.Params["size"]; got != 5 {
|
|
t.Fatalf("size = %#v, want 5", got)
|
|
}
|
|
}
|
|
|
|
func TestDevdocArticleSearchAcceptsPositionalKeyword(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
runner := &devdocCommandRunner{}
|
|
cmd := devdocHandler{}.Command(runner)
|
|
var out, errOut bytes.Buffer
|
|
cmd.SetOut(&out)
|
|
cmd.SetErr(&errOut)
|
|
cmd.SetArgs([]string{"article", "search", "MCP"})
|
|
|
|
if err := cmd.Execute(); err != nil {
|
|
t.Fatalf("Execute() error = %v\nstderr:\n%s", err, errOut.String())
|
|
}
|
|
if got := runner.last.Params["keyword"]; got != "MCP" {
|
|
t.Fatalf("keyword = %#v, want MCP", got)
|
|
}
|
|
}
|