57 lines
2.1 KiB
Go
57 lines
2.1 KiB
Go
// 图片生成服务测试,验证参考图文件名映射和对象键去重规则。
|
|
package productimage
|
|
|
|
import "testing"
|
|
|
|
// TestBuildProviderPrompt 验证文件名提及会与参考图数组顺序建立稳定对应关系。
|
|
func TestBuildProviderPrompt(t *testing.T) {
|
|
t.Parallel()
|
|
prompt := "让@正面图.png中的商品使用@包装图.webp的包装"
|
|
got := buildProviderPrompt(prompt, []string{"正面图.png", "包装图.webp"})
|
|
want := "参考图对应关系:第1张参考图名称为“正面图.png”;第2张参考图名称为“包装图.webp”。\n" + prompt
|
|
if got != want {
|
|
t.Fatalf("buildProviderPrompt() = %q, want %q", got, want)
|
|
}
|
|
if withoutReferences := buildProviderPrompt(prompt, nil); withoutReferences != prompt {
|
|
t.Fatalf("buildProviderPrompt() without references = %q, want %q", withoutReferences, prompt)
|
|
}
|
|
}
|
|
|
|
// TestUniqueStrings 验证重复或空对象键不会触发重复删除请求。
|
|
func TestUniqueStrings(t *testing.T) {
|
|
t.Parallel()
|
|
got := uniqueStrings([]string{"a", "", "b", "a", "b", "c"})
|
|
want := []string{"a", "b", "c"}
|
|
if len(got) != len(want) {
|
|
t.Fatalf("uniqueStrings() length = %d, want %d", len(got), len(want))
|
|
}
|
|
for index := range want {
|
|
if got[index] != want[index] {
|
|
t.Fatalf("uniqueStrings()[%d] = %q, want %q", index, got[index], want[index])
|
|
}
|
|
}
|
|
}
|
|
|
|
// TestCanDeleteGeneration 验证失败停滞的活动任务可删除,而正常生成中的任务仍受保护。
|
|
func TestCanDeleteGeneration(t *testing.T) {
|
|
t.Parallel()
|
|
tests := []struct {
|
|
name string
|
|
status string
|
|
errorMessage string
|
|
want bool
|
|
}{
|
|
{name: "正常生成", status: "processing", want: false},
|
|
{name: "连接超时", status: "pending_submission", errorMessage: "dial tcp: i/o timeout", want: true},
|
|
{name: "生成失败", status: "failed", want: true},
|
|
{name: "生成成功", status: "succeeded", want: true},
|
|
}
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
if got := canDeleteGeneration(test.status, test.errorMessage); got != test.want {
|
|
t.Fatalf("canDeleteGeneration(%q, %q) = %t, want %t", test.status, test.errorMessage, got, test.want)
|
|
}
|
|
})
|
|
}
|
|
}
|