Files
2026-10-13 22:44:31 +08:00

101 lines
3.1 KiB
Go

package workbench
import (
"testing"
"yingce/backend/internal/model"
)
func TestEnsureBuiltinCatalogPublishesImageAndVideoPresets(t *testing.T) {
svc, db, _ := newWorkbenchTest(t)
if err := svc.EnsureBuiltinCatalog(); err != nil {
t.Fatal(err)
}
for _, kind := range []string{KindImage, KindVideo} {
tools, err := svc.PublicTools(kind)
if err != nil {
t.Fatal(err)
}
if len(tools) == 0 {
t.Fatalf("no builtin %s tools", kind)
}
for _, tool := range tools {
if len(tool.Presets) != 3 {
t.Fatalf("tool %s has %d public presets, want 3", tool.ID, len(tool.Presets))
}
for _, preset := range tool.Presets {
if preset.ToolID != tool.ID || preset.PromptTemplate == "" || !preset.Enabled {
t.Fatalf("unusable public preset: %#v", preset)
}
}
}
}
var count int64
if err := db.Model(&model.WorkbenchTool{}).Count(&count).Error; err != nil {
t.Fatal(err)
}
if count < 2 {
t.Fatalf("tool count=%d", count)
}
}
func TestEnsureBuiltinCatalogIsRepeatableAndPreservesAdminState(t *testing.T) {
svc, db, _ := newWorkbenchTest(t)
seedTools, seedPresets, err := builtinCatalog()
if err != nil {
t.Fatal(err)
}
editedTool := seedTools[0]
editedTool.Name = "管理员自定义名称"
editedTool.Enabled = false
editedTool.Version = 9
editedPreset := seedPresets[0]
editedPreset.Name = "管理员自定义预设"
editedPreset.PromptTemplate = "管理员自己的提示词"
editedPreset.Enabled = false
editedPreset.Version = 6
if err := db.Create(&editedTool).Error; err != nil {
t.Fatal(err)
}
if err := db.Create(&editedPreset).Error; err != nil {
t.Fatal(err)
}
if err := svc.EnsureBuiltinCatalog(); err != nil {
t.Fatal(err)
}
var firstTools, firstPresets int64
if err := db.Model(&model.WorkbenchTool{}).Count(&firstTools).Error; err != nil {
t.Fatal(err)
}
if err := db.Model(&model.WorkbenchPreset{}).Count(&firstPresets).Error; err != nil {
t.Fatal(err)
}
if err := svc.EnsureBuiltinCatalog(); err != nil {
t.Fatal(err)
}
var secondTools, secondPresets int64
if err := db.Model(&model.WorkbenchTool{}).Count(&secondTools).Error; err != nil {
t.Fatal(err)
}
if err := db.Model(&model.WorkbenchPreset{}).Count(&secondPresets).Error; err != nil {
t.Fatal(err)
}
if firstTools != secondTools || firstPresets != secondPresets {
t.Fatalf("repeat seed changed counts: tools %d/%d presets %d/%d", firstTools, secondTools, firstPresets, secondPresets)
}
var gotTool model.WorkbenchTool
if err := db.First(&gotTool, "id = ?", editedTool.ID).Error; err != nil {
t.Fatal(err)
}
if gotTool.Name != editedTool.Name || gotTool.Enabled != editedTool.Enabled || gotTool.Version != editedTool.Version {
t.Fatalf("admin tool changed: %#v", gotTool)
}
var gotPreset model.WorkbenchPreset
if err := db.First(&gotPreset, "id = ?", editedPreset.ID).Error; err != nil {
t.Fatal(err)
}
if gotPreset.Name != editedPreset.Name || gotPreset.PromptTemplate != editedPreset.PromptTemplate || gotPreset.Enabled != editedPreset.Enabled || gotPreset.Version != editedPreset.Version {
t.Fatalf("admin preset changed: %#v", gotPreset)
}
}