101 lines
3.1 KiB
Go
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)
|
|
}
|
|
}
|