refactor(backend): isolate workspace aggregation
This commit is contained in:
@@ -98,7 +98,7 @@ func TestCreateProjectPersistsWorkspaceMetadata(t *testing.T) {
|
||||
require.Equal(t, "#165DFF", project.Background)
|
||||
require.Equal(t, "RSS 采集和线索沉淀", project.Description)
|
||||
|
||||
workspace, err := service.Workspace(1, project.ID)
|
||||
workspace, err := service.Workspace(1, project.Identity)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "EXP", workspace.Project.Identifier)
|
||||
require.Equal(t, "compass", workspace.Project.Icon)
|
||||
@@ -160,14 +160,14 @@ func TestWorkspaceMatchesFrontendContract(t *testing.T) {
|
||||
require.NoError(t, database.Create(&models.SenlinAgentCronPlan{ProjectID: project.ID, CreatedBy: 1, Title: "Weekly inbox review reminder", Schedule: "0 9 * * 1", NextRunAt: &nextRun, Enabled: true, LastResult: "Not run yet"}).Error)
|
||||
require.NoError(t, database.Create(&models.SenlinAgentCronPlan{ProjectID: other.ID, CreatedBy: 1, Title: "Other cron", Schedule: "0 9 * * 2", Enabled: true}).Error)
|
||||
|
||||
workspace, err := service.Workspace(1, project.ID)
|
||||
workspace, err := service.Workspace(1, project.Identity)
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, project.ID, workspace.Project.ID)
|
||||
require.Equal(t, project.Identity, workspace.Project.ID)
|
||||
require.Equal(t, "Project A1", workspace.Project.Name)
|
||||
require.Equal(t, "A1", workspace.Project.Initials)
|
||||
require.Equal(t, int64(1), workspace.Project.UnreadCount)
|
||||
require.Equal(t, []string{"all", "UI", "knowledge"}, workspace.Tags)
|
||||
require.Equal(t, []string{"UI", "knowledge"}, workspaceTagNames(workspace.Tags))
|
||||
require.Len(t, workspace.Channels, 7)
|
||||
require.Equal(t, "overview", workspace.Channels[0].Type)
|
||||
require.Equal(t, "inbox", workspace.Channels[1].Type)
|
||||
@@ -198,7 +198,7 @@ func TestWorkspaceRejectsProjectOwnedByAnotherUser(t *testing.T) {
|
||||
project, err := service.CreateProject(2, "Beta", "")
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = service.Workspace(1, project.ID)
|
||||
_, err = service.Workspace(1, project.Identity)
|
||||
|
||||
require.Error(t, err)
|
||||
}
|
||||
@@ -226,12 +226,12 @@ func TestCreateTaskAddsTaskToOwnedProject(t *testing.T) {
|
||||
require.Equal(t, "open", task.Status)
|
||||
require.NotNil(t, task.DueAt)
|
||||
require.NotNil(t, task.TagID)
|
||||
workspace, err := service.Workspace(1, project.ID)
|
||||
workspace, err := service.Workspace(1, project.Identity)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, workspace.Tasks, 1)
|
||||
require.Equal(t, "Follow up with client", workspace.Tasks[0].Title)
|
||||
require.Equal(t, "客户反馈", workspace.Tasks[0].Tag)
|
||||
require.Equal(t, []string{"all", "客户反馈"}, workspace.Tags)
|
||||
require.Equal(t, []string{"客户反馈"}, workspaceTagNames(workspace.Tags))
|
||||
}
|
||||
|
||||
func TestCreateTaskRejectsProjectOwnedByAnotherUser(t *testing.T) {
|
||||
@@ -264,10 +264,10 @@ func TestUpdateTaskPersistsTagAndCompletion(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "Draft proposal v2", updated.Title)
|
||||
require.Equal(t, "done", updated.Status)
|
||||
workspace, err := service.Workspace(1, project.ID)
|
||||
workspace, err := service.Workspace(1, project.Identity)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "重要", workspace.Tasks[0].Tag)
|
||||
require.Equal(t, []string{"all", "客户", "重要"}, workspace.Tags)
|
||||
require.Equal(t, []string{"客户", "重要"}, workspaceTagNames(workspace.Tags))
|
||||
}
|
||||
|
||||
func TestCreateProjectTagAddsTagToOwnedProject(t *testing.T) {
|
||||
@@ -281,9 +281,9 @@ func TestCreateProjectTagAddsTagToOwnedProject(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, project.ID, tag.ProjectID)
|
||||
require.Equal(t, "Design", tag.Name)
|
||||
workspace, err := service.Workspace(1, project.ID)
|
||||
workspace, err := service.Workspace(1, project.Identity)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, []string{"all", "Design"}, workspace.Tags)
|
||||
require.Equal(t, []string{"Design"}, workspaceTagNames(workspace.Tags))
|
||||
}
|
||||
|
||||
func TestCreateProjectTagRejectsProjectOwnedByAnotherUser(t *testing.T) {
|
||||
@@ -341,7 +341,7 @@ func TestCreateCronPlanAddsPlanToOwnedProject(t *testing.T) {
|
||||
require.Equal(t, "0 9 * * *", plan.Schedule)
|
||||
require.True(t, plan.Enabled)
|
||||
require.NotNil(t, plan.NextRunAt)
|
||||
workspace, err := service.Workspace(1, project.ID)
|
||||
workspace, err := service.Workspace(1, project.Identity)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, workspace.CronPlans, 1)
|
||||
require.Equal(t, "Daily inbox sweep", workspace.CronPlans[0].Title)
|
||||
@@ -355,3 +355,11 @@ func newTestDB(t *testing.T) *gorm.DB {
|
||||
models.DBService = database
|
||||
return database
|
||||
}
|
||||
|
||||
func workspaceTagNames(tags []WorkspaceTagDTO) []string {
|
||||
names := make([]string, 0, len(tags))
|
||||
for _, tag := range tags {
|
||||
names = append(names, tag.Name)
|
||||
}
|
||||
return names
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user