mirror of
https://github.com/larksuite/cli.git
synced 2026-07-03 14:02:43 +08:00
62 lines
2.4 KiB
Go
62 lines
2.4 KiB
Go
// Copyright (c) 2026 Lark Technologies Pte. Ltd.
|
||
// SPDX-License-Identifier: MIT
|
||
|
||
package service
|
||
|
||
import (
|
||
"strings"
|
||
"testing"
|
||
)
|
||
|
||
func TestSanitizeOptionDesc(t *testing.T) {
|
||
cases := map[string]string{
|
||
"": "",
|
||
"以 open_id 标识用户": "以 open_id 标识用户",
|
||
"中文。English second clause": "中文", // first clause only (。)
|
||
"head;tail": "head", // first clause (;)
|
||
"line one\nline two": "line one", // first clause (newline)
|
||
" spaced out ": "spaced out", // whitespace collapsed
|
||
"see [飞书后台](https://x/admin) 详情": "see 飞书后台 详情", // markdown link -> text, url dropped
|
||
}
|
||
for in, want := range cases {
|
||
if got := sanitizeOptionDesc(in); got != want {
|
||
t.Errorf("sanitizeOptionDesc(%q) = %q, want %q", in, got, want)
|
||
}
|
||
}
|
||
|
||
// Truncation: a long single clause is cut to 40 runes with an ellipsis,
|
||
// rune-safe (no split mid-character).
|
||
long := strings.Repeat("文", 60)
|
||
got := sanitizeOptionDesc(long)
|
||
if r := []rune(got); len(r) != 40 || !strings.HasSuffix(got, "...") {
|
||
t.Errorf("truncation = %q (%d runes), want 40 runes ending in ...", got, len(r))
|
||
}
|
||
}
|
||
|
||
func TestSanitizeFieldDesc_TrimsDanglingPunctuation(t *testing.T) {
|
||
// A clause cut can strand a connector (e.g. a colon introducing a list the
|
||
// newline cut drops, as in im.reactions.list's message_id); the help line
|
||
// joiner then renders "…获取方式:." — so dangling punctuation must go too.
|
||
cases := map[string]string{
|
||
"待查询的消息ID。ID 获取方式:\n- 调用接口获取": "待查询的消息ID。ID 获取方式",
|
||
"see the list below:\nitem": "see the list below",
|
||
"逗号结尾,\n下一行": "逗号结尾",
|
||
}
|
||
for in, want := range cases {
|
||
if got := sanitizeFieldDesc(in); got != want {
|
||
t.Errorf("sanitizeFieldDesc(%q) = %q, want %q", in, got, want)
|
||
}
|
||
}
|
||
}
|
||
|
||
func TestSanitizeFieldDesc_StripsBackquotes(t *testing.T) {
|
||
// pflag's UnquoteUsage takes a backquoted word in a flag's usage string as
|
||
// the flag's metavar: wiki space_id's description rendered the flag as
|
||
// "--space-id my_library" instead of "--space-id string".
|
||
in := "[知识空间id](https://x/wiki),如果查询我的文档库可替换为`my_library`"
|
||
want := "知识空间id,如果查询我的文档库可替换为my_library"
|
||
if got := sanitizeFieldDesc(in); got != want {
|
||
t.Errorf("sanitizeFieldDesc(%q) = %q, want %q", in, got, want)
|
||
}
|
||
}
|