feat(workbench): 初始化内置工具目录
This commit is contained in:
1 parent
1f2f4da42b
commit
f6b60a3855
7 files changed
+440
No files matched your search
@@ -0,0 +1,100 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user