51 lines
2.1 KiB
Go
51 lines
2.1 KiB
Go
package search
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/glebarez/sqlite"
|
|
"github.com/stretchr/testify/require"
|
|
"gorm.io/gorm"
|
|
"senlinai-agent/backend/internal/domain"
|
|
)
|
|
|
|
func TestSearchFindsNoteBody(t *testing.T) {
|
|
database, err := gorm.Open(sqlite.Open(fmt.Sprintf("file:%s?mode=memory&cache=shared", t.Name())), &gorm.Config{})
|
|
require.NoError(t, err)
|
|
require.NoError(t, domain.AutoMigrate(database))
|
|
require.NoError(t, database.Create(&domain.Project{ID: 1, OwnerID: 7, Name: "支付项目"}).Error)
|
|
require.NoError(t, database.Create(&domain.Note{ProjectID: 1, CreatedBy: 7, Title: "接口方案", Markdown: "二维码支付回调设计"}).Error)
|
|
|
|
service := NewService(database)
|
|
results, err := service.Search(7, "回调")
|
|
|
|
require.NoError(t, err)
|
|
require.Len(t, results, 1)
|
|
require.Equal(t, "note", results[0].Type)
|
|
}
|
|
|
|
func TestSearchFindsCoreProjectObjects(t *testing.T) {
|
|
database, err := gorm.Open(sqlite.Open(fmt.Sprintf("file:%s?mode=memory&cache=shared", t.Name())), &gorm.Config{})
|
|
require.NoError(t, err)
|
|
require.NoError(t, domain.AutoMigrate(database))
|
|
require.NoError(t, database.Create(&domain.Project{ID: 1, OwnerID: 7, Name: "支付项目"}).Error)
|
|
require.NoError(t, database.Create(&domain.Task{ProjectID: 1, CreatedBy: 7, Title: "回调任务", Description: "检查 webhook"}).Error)
|
|
require.NoError(t, database.Create(&domain.Source{ProjectID: 1, CreatedBy: 7, Kind: "link", Title: "支付文档", URL: "https://example.com/pay", ContentText: "webhook 签名"}).Error)
|
|
require.NoError(t, database.Create(&domain.InboxItem{ProjectID: 1, CreatedBy: 7, SourceType: "text", Title: "收集项", Body: "webhook 待整理"}).Error)
|
|
require.NoError(t, database.Create(&domain.AISession{ProjectID: 1, CreatedBy: 7, Title: "AI 分析", Context: "webhook 问答"}).Error)
|
|
|
|
service := NewService(database)
|
|
results, err := service.Search(7, "webhook")
|
|
|
|
require.NoError(t, err)
|
|
types := make(map[string]bool)
|
|
for _, result := range results {
|
|
types[result.Type] = true
|
|
}
|
|
require.True(t, types["task"])
|
|
require.True(t, types["source"])
|
|
require.True(t, types["inbox"])
|
|
require.True(t, types["ai_session"])
|
|
}
|