fix(backend): keep workspace completion metadata honest
This commit is contained in:
@@ -3,6 +3,7 @@ package projects
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@@ -63,7 +64,7 @@ func TestWorkspaceUsesIdentitiesUTCTimesAndProjectScopedTags(t *testing.T) {
|
||||
require.Equal(t, "UI", workspace.Tasks[0].Tag)
|
||||
require.Equal(t, nextRun.UTC(), *workspace.Tasks[0].Due)
|
||||
require.Equal(t, createdAt.UTC(), workspace.Tasks[0].CreatedAt)
|
||||
require.Equal(t, updatedAt.UTC(), *workspace.Tasks[0].CompletedAt)
|
||||
require.Nil(t, workspace.Tasks[0].CompletedAt)
|
||||
|
||||
require.Len(t, workspace.AISessions, 1)
|
||||
require.Equal(t, session.Identity, workspace.AISessions[0].ID)
|
||||
@@ -93,6 +94,34 @@ func TestWorkspaceUsesIdentitiesUTCTimesAndProjectScopedTags(t *testing.T) {
|
||||
require.NotContains(t, string(payload), "duration")
|
||||
}
|
||||
|
||||
func TestWorkspaceDoneTaskDoesNotInventCompletedAt(t *testing.T) {
|
||||
database := newTestDB(t)
|
||||
service := NewService()
|
||||
require.NoError(t, database.Create(&models.SenlinAgentUser{Email: "owner@example.com", DisplayName: "Owner", PasswordHash: "hash"}).Error)
|
||||
project, err := service.CreateProject(1, "Alpha", "")
|
||||
require.NoError(t, err)
|
||||
createdAt := time.Date(2026, 7, 20, 1, 0, 0, 0, time.UTC)
|
||||
updatedAt := createdAt.Add(2 * time.Hour)
|
||||
require.NoError(t, database.Create(&models.SenlinAgentTask{
|
||||
ProjectID: project.ID, CreatedBy: 1, Title: "Done", Status: "done", CreatedAt: createdAt, UpdatedAt: updatedAt,
|
||||
}).Error)
|
||||
|
||||
workspace, err := service.Workspace(1, project.Identity)
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Len(t, workspace.Tasks, 1)
|
||||
require.Nil(t, workspace.Tasks[0].CompletedAt)
|
||||
payload, err := json.Marshal(workspace.Tasks[0])
|
||||
require.NoError(t, err)
|
||||
require.Contains(t, string(payload), `"completedAt":null`)
|
||||
}
|
||||
|
||||
func TestWorkspaceFileDoesNotOwnDashboard(t *testing.T) {
|
||||
source, err := os.ReadFile("workspace.go")
|
||||
require.NoError(t, err)
|
||||
require.NotContains(t, string(source), "func (s *Service) Dashboard")
|
||||
}
|
||||
|
||||
func TestWorkspaceRejectsProjectOwnedByAnotherUserByIdentity(t *testing.T) {
|
||||
newTestDB(t)
|
||||
service := NewService()
|
||||
|
||||
Reference in New Issue
Block a user