Files
creator-hub/internal/creator/content_test.go
T

58 lines
1.5 KiB
Go

package creator
import (
"encoding/json"
"testing"
)
func TestSlicePageUsesEmptyDataArray(t *testing.T) {
page, err := slicePage[string](nil, 1, 25)
if err != nil {
t.Fatal(err)
}
encoded, err := json.Marshal(page)
if err != nil {
t.Fatal(err)
}
if string(encoded) != `{"data":[],"page":1,"page_size":25,"total":0,"has_next":false}` {
t.Fatalf("empty page JSON = %s", encoded)
}
}
func TestParseGeneratedRewriteRequiresBoundedJSON(t *testing.T) {
title, script, err := parseGeneratedRewrite(`{"title":"新标题","script":"新脚本"}`)
if err != nil || title != "新标题" || script != "新脚本" {
t.Fatalf("parseGeneratedRewrite() = %q, %q, %v", title, script, err)
}
for _, content := range []string{
"",
"不是 JSON",
`{"title":"有标题"}`,
`{"title":"标题","script":""}`,
} {
if _, _, err := parseGeneratedRewrite(content); err == nil {
t.Fatalf("parseGeneratedRewrite(%q) accepted invalid output", content)
}
}
}
func TestValidateCreatorTags(t *testing.T) {
valid := make([]string, 20)
for i := range valid {
valid[i] = "标签"
}
if err := validateCreatorTags(valid); err != nil {
t.Fatalf("validateCreatorTags(valid) = %v", err)
}
for name, tags := range map[string][]string{
"too many": append(valid, "额外"),
"empty": {""},
"spaced": {" 标签"},
"too long": {string(make([]rune, 33))},
} {
if err := validateCreatorTags(tags); err == nil {
t.Fatalf("validateCreatorTags(%s) accepted invalid tags", name)
}
}
}