Files
ttstd-infinite-canvas/backend/internal/service/model_capability_test.go
WindC0X 9ee71d4650 feat(canvas): 画布媒体工作流 - 支持批量连线、失败重试与模型能力增强
合并 PR #230。保留当前主线样式与组件结构,吸收批量连线、失败批次重试、媒体模型能力和相关后端增强,并修复集成检查发现的分辨率选择器启用条件与测试稳定性问题。
2026-08-15 15:48:16 +08:00

65 lines
2.2 KiB
Go

package service
import (
"fmt"
"strings"
"testing"
)
func TestValidateImageTaskRejectsOversizedGrokPromptByUTF8Bytes(t *testing.T) {
prompt := strings.Repeat("中", 4001)
input := canvasGenerationInput{
Mode: "image",
Prompt: prompt,
Config: providerConfig{InterfaceType: "grok-image", Model: "grok-imagine-image-quality"},
}
err := validateImageTask(DefaultImageCapabilityConfig("grok-image", "grok-imagine-image-quality"), input)
if err == nil {
t.Fatal("validateImageTask() error = nil")
}
wantBytes := fmt.Sprintf("%d UTF-8 字节", len(prompt))
if !strings.Contains(err.Error(), wantBytes) || !strings.Contains(err.Error(), "8000") || !strings.Contains(err.Error(), "连线文本") {
t.Fatalf("validateImageTask() error = %q", err)
}
}
func TestValidateImageTaskDoesNotApplyQualityPromptLimitToGrokLite(t *testing.T) {
prompt := strings.Repeat("中", 4001)
input := canvasGenerationInput{
Mode: "image",
Prompt: prompt,
Config: providerConfig{InterfaceType: "grok-image", Model: "grok-imagine-image"},
}
if err := validateImageTask(DefaultImageCapabilityConfig("grok-image", "grok-imagine-image"), input); err != nil {
t.Fatalf("validateImageTask() error = %q", err)
}
}
func TestValidateImageTaskEnforcesGPTImage2CustomSizeLimits(t *testing.T) {
profile := DefaultImageCapabilityConfig("openai-image", "gpt-image-2")
profile.Size.AllowCustom = true
valid := canvasGenerationInput{Mode: "image", Config: providerConfig{InterfaceType: "openai-image", Model: "gpt-image-2", Size: "3840x1920"}}
if err := validateImageTask(profile, valid); err != nil {
t.Fatalf("validateImageTask(valid) error = %v", err)
}
tests := map[string]string{
"4096x2048": "最长边",
"3840x2161": "16 的倍数",
"3840x1024": "宽高比",
"640x640": "总像素",
}
for size, want := range tests {
t.Run(size, func(t *testing.T) {
input := canvasGenerationInput{Mode: "image", Config: providerConfig{InterfaceType: "openai-image", Model: "gpt-image-2", Size: size}}
err := validateImageTask(profile, input)
if err == nil || !strings.Contains(err.Error(), want) {
t.Fatalf("validateImageTask(%s) error = %v, want %q", size, err, want)
}
})
}
}