Connect React workspace to backend data
This commit is contained in:
65
backend/internal/seed/demo_test.go
Normal file
65
backend/internal/seed/demo_test.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package seed
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/glebarez/sqlite"
|
||||
"github.com/stretchr/testify/require"
|
||||
"gorm.io/gorm"
|
||||
"senlinai-agent/backend/internal/logic/auth"
|
||||
"senlinai-agent/backend/internal/logic/projects"
|
||||
"senlinai-agent/backend/internal/models"
|
||||
)
|
||||
|
||||
func TestDemoSeedCreatesFrontendWorkspaceData(t *testing.T) {
|
||||
database := newTestDB(t)
|
||||
|
||||
result, err := Demo(database, DemoOptions{
|
||||
Email: "demo@senlin.ai",
|
||||
DisplayName: "演示用户",
|
||||
Password: "password123",
|
||||
})
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "demo@senlin.ai", result.User.Email)
|
||||
require.Len(t, result.Projects, 4)
|
||||
|
||||
token, err := auth.NewService("test-secret").Login("demo@senlin.ai", "password123")
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, token)
|
||||
|
||||
workspace, err := projects.NewService().Workspace(result.User.ID, result.Projects[0].ID)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "项目 A1", workspace.Project.Name)
|
||||
require.GreaterOrEqual(t, len(workspace.Inbox), 4)
|
||||
require.GreaterOrEqual(t, len(workspace.Tasks), 3)
|
||||
require.GreaterOrEqual(t, len(workspace.AISessions), 4)
|
||||
require.GreaterOrEqual(t, len(workspace.NotesSources), 3)
|
||||
require.GreaterOrEqual(t, len(workspace.CronPlans), 3)
|
||||
require.Len(t, workspace.Channels, 8)
|
||||
}
|
||||
|
||||
func TestDemoSeedIsIdempotent(t *testing.T) {
|
||||
database := newTestDB(t)
|
||||
|
||||
first, err := Demo(database, DemoOptions{Email: "demo@senlin.ai", DisplayName: "演示用户", Password: "password123"})
|
||||
require.NoError(t, err)
|
||||
second, err := Demo(database, DemoOptions{Email: "demo@senlin.ai", DisplayName: "演示用户", Password: "password123"})
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, first.User.ID, second.User.ID)
|
||||
require.Len(t, second.Projects, 4)
|
||||
var userCount int64
|
||||
require.NoError(t, database.Model(&models.SenlinAgentUser{}).Where("email = ?", "demo@senlin.ai").Count(&userCount).Error)
|
||||
require.Equal(t, int64(1), userCount)
|
||||
}
|
||||
|
||||
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{})
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, models.AutoMigrate(database))
|
||||
models.DBService = database
|
||||
return database
|
||||
}
|
||||
Reference in New Issue
Block a user