package model import ( "testing" "time" "github.com/stretchr/testify/assert" ) func TestSessionStatusConstants(t *testing.T) { assert.Equal(t, "requirement_document", StatusRequirementDocument) assert.Equal(t, "technical_document", StatusTechnicalDocument) assert.Equal(t, "code", StatusCode) assert.Equal(t, "test", StatusTest) assert.Equal(t, "release", StatusRelease) } func TestSessionCollectionName(t *testing.T) { s := Session{} assert.Equal(t, "code_sessions", s.CollectionName()) } func TestSessionDetailCollectionName(t *testing.T) { d := SessionDetail{} assert.Equal(t, "code_session_details", d.CollectionName()) } func TestSessionWithDetail(t *testing.T) { session := &Session{ ID: "test-session-123", Title: "测试会话", AgentName: "replenish", Status: StatusRequirementDocument, UserID: "user-001", TenantID: "tenant-001", CreatedAt: time.Now(), UpdatedAt: time.Now(), } detail := &SessionDetail{ SessionID: "test-session-123", RequirementDoc: "需求文档内容", TechnicalDoc: "技术文档内容", CodeItems: []CodeItem{ { Order: 1, SelectPart: "SELECT *", FromPart: "FROM users", WherePart: "WHERE active = true", GroupByPart: "GROUP BY type", OrderByPart: "ORDER BY created_at DESC", TempTableName: "temp_users", Parameters: map[string]interface{}{ "active": true, "limit": 100, }, ReturnColumns: map[string]string{ "id": "用户ID", "username": "用户名", "email": "邮箱", }, }, }, CreatedAt: time.Now(), UpdatedAt: time.Now(), } sessionWithDetail := &SessionWithDetail{ Session: session, Detail: detail, HistoryCount: 5, } assert.Equal(t, "test-session-123", sessionWithDetail.Session.ID) assert.Equal(t, "test-session-123", sessionWithDetail.Detail.SessionID) assert.Equal(t, 5, sessionWithDetail.HistoryCount) assert.Equal(t, 1, len(sessionWithDetail.Detail.CodeItems)) assert.Equal(t, "SELECT *", sessionWithDetail.Detail.CodeItems[0].SelectPart) }