fix: 更新逻辑,并更新单元测试
This commit is contained in:
parent
b736d2d505
commit
c8d7c55f57
@ -134,16 +134,6 @@ func isValidPrefix(prefix string) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// isChineseName 校验姓名是否仅包含中文字符(不包含数字和英文字母)
|
||||
func isChineseName(name string) bool {
|
||||
for _, r := range name {
|
||||
if (r >= '0' && r <= '9') || (r >= 'a' && r <= 'z') || (r >= 'A' && r <= 'Z') {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// ConvertTitleByLocale 将报告标题根据 locale 进行翻译转换。
|
||||
// title: 原始中文标题,格式为 "YYYY-MM" + 姓名 + "数据报告"/"竞品报告",如 "2026-03王旗老师数据报告"
|
||||
// locale: "zh-CN", "zh-TW", "EN", "de-DE", "ja-JP" 或其他 Accept-Language 值
|
||||
@ -168,9 +158,6 @@ func ConvertTitleByLocale(title, locale string) string {
|
||||
}
|
||||
|
||||
personName := title[7 : len(title)-len(reportType)]
|
||||
if !isChineseName(personName) {
|
||||
return title
|
||||
}
|
||||
|
||||
return ConvertReportName(prefix, personName, reportType, locale)
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ func TestIsValidPrefix(t *testing.T) {
|
||||
{name: "invalid no dash", prefix: "202603", expected: false},
|
||||
{name: "invalid letters in year", prefix: "ab-03", expected: false},
|
||||
{name: "invalid letters in month", prefix: "2026-ab", expected: false},
|
||||
{name: "invalid month > 12", prefix: "2026-13", expected: true}, // 只校验格式,不校验月份合理性
|
||||
{name: "invalid month > 12", prefix: "2026-13", expected: true}, // 只校验格式,不校验月份合理性
|
||||
{name: "empty string", prefix: "", expected: false},
|
||||
}
|
||||
|
||||
@ -30,33 +30,6 @@ func TestIsValidPrefix(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsChineseName(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input string
|
||||
expected bool
|
||||
}{
|
||||
{name: "pure Chinese name", input: "王旗", expected: true},
|
||||
{name: "Chinese name with title", input: "王旗老师", expected: true},
|
||||
{name: "two char Chinese", input: "王明", expected: true},
|
||||
{name: "three char Chinese", input: "王小明", expected: true},
|
||||
{name: "contains digit", input: "王旗1", expected: false},
|
||||
{name: "contains English lower", input: "wang旗", expected: false},
|
||||
{name: "contains English upper", input: "WANG旗", expected: false},
|
||||
{name: "mixed Chinese and digit", input: "王1明", expected: false},
|
||||
{name: "empty string", input: "", expected: true},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := isChineseName(tt.input)
|
||||
if result != tt.expected {
|
||||
t.Errorf("isChineseName(%q) = %v, want %v", tt.input, result, tt.expected)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestConvertTitleByLocale(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
@ -125,16 +98,16 @@ func TestConvertTitleByLocale(t *testing.T) {
|
||||
expected: "202603王旗老师数据报告",
|
||||
},
|
||||
{
|
||||
name: "invalid personName with digit returns original",
|
||||
name: "personName with digit translates Chinese chars only",
|
||||
title: "2026-03王旗1老师数据报告",
|
||||
locale: "EN",
|
||||
expected: "2026-03王旗1老师数据报告",
|
||||
expected: "2026-03 Wang Qi Data Report",
|
||||
},
|
||||
{
|
||||
name: "invalid personName with English returns original",
|
||||
name: "personName with leading English drops non-Chinese chars",
|
||||
title: "2026-03wang老师数据报告",
|
||||
locale: "EN",
|
||||
expected: "2026-03wang老师数据报告",
|
||||
expected: "2026-03 Lao Shi Data Report",
|
||||
},
|
||||
{
|
||||
name: "title too short returns original",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user