feat: align controlled AI sessions and MVP controls
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
||||
"github.com/glebarez/sqlite"
|
||||
"github.com/stretchr/testify/require"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/logger"
|
||||
"senlinai-agent/backend/internal/models"
|
||||
)
|
||||
|
||||
@@ -85,20 +86,25 @@ func TestCheckRateLimitRejectsCallsOverWindow(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestCreateAISession(t *testing.T) {
|
||||
newTestDB(t)
|
||||
service := NewSessionService()
|
||||
database := newTestDB(t)
|
||||
user := models.SenlinAgentUser{Email: "session@example.com", DisplayName: "Session User", PasswordHash: "hash"}
|
||||
require.NoError(t, database.Create(&user).Error)
|
||||
project := models.SenlinAgentProject{OwnerID: user.ID, Name: "Session Project", Identifier: "SESSION"}
|
||||
require.NoError(t, database.Create(&project).Error)
|
||||
service := NewSessionService(NewGateway("system-key"))
|
||||
|
||||
session, err := service.Create(7, 3, "报价分析")
|
||||
session, err := service.Create(user.ID, project.Identity, "报价分析", "询价上下文")
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, uint(7), session.ProjectID)
|
||||
require.Equal(t, uint(3), session.CreatedBy)
|
||||
require.Equal(t, project.ID, session.ProjectID)
|
||||
require.Equal(t, user.ID, session.CreatedBy)
|
||||
require.Equal(t, "报价分析", session.Title)
|
||||
require.Equal(t, "ready", session.Status)
|
||||
}
|
||||
|
||||
func newTestDB(t *testing.T) *gorm.DB {
|
||||
t.Helper()
|
||||
database, err := gorm.Open(sqlite.Open(fmt.Sprintf("file:%s?mode=memory&cache=shared", t.Name())), &gorm.Config{})
|
||||
database, err := gorm.Open(sqlite.Open(fmt.Sprintf("file:%s?mode=memory&cache=shared", t.Name())), &gorm.Config{Logger: logger.Default.LogMode(logger.Silent)})
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, models.AutoMigrate(database))
|
||||
models.DBService = database
|
||||
|
||||
Reference in New Issue
Block a user