62 lines
1.8 KiB
Go
62 lines
1.8 KiB
Go
package runtime
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"chat-agent-system/internal/projectinstance"
|
|
)
|
|
|
|
func TestResolveDocTask_NoneDutiesStayZero(t *testing.T) {
|
|
ctx := context.Background()
|
|
store := projectinstance.NewMemoryStore()
|
|
if err := projectinstance.SeedProjectMeta(store, 500, projectinstance.LifecyclePlanning, "", 1, 0); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
svc := projectinstance.NewService(store, projectinstance.OptionalDutyResolver(), nil, nil)
|
|
if _, err := svc.SaveWorkflowPlan(ctx, 500, 1, true, projectinstance.SavePlanInput{
|
|
Plan: projectinstance.OptionalDutyPlan(
|
|
projectinstance.DocDuty{AuthorUserID: 1, ReviewerUserID: 2, ApproverUserID: 3},
|
|
projectinstance.DocDuty{},
|
|
),
|
|
ExpectedPlanRevision: 0, ExpectedSelectionVersion: 1,
|
|
}); err != nil {
|
|
t.Fatalf("save: %v", err)
|
|
}
|
|
preview, err := svc.ActivationPreview(ctx, 500, 1, true)
|
|
if err != nil {
|
|
t.Fatalf("preview: %v", err)
|
|
}
|
|
if _, err := svc.Activate(ctx, 500, 1, true, projectinstance.ActivateInput{
|
|
ConfirmationToken: preview.ConfirmationToken,
|
|
ExpectedProjectVersion: preview.ExpectedProjectVersion,
|
|
ExpectedPlanRevision: preview.ExpectedPlanRevision,
|
|
}); err != nil {
|
|
t.Fatalf("activate: %v", err)
|
|
}
|
|
|
|
detail, _, err := svc.GetLiveInstanceDetail(ctx, 500)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var researchID int64
|
|
for _, st := range detail.Stages {
|
|
for _, dt := range st.DocTasks {
|
|
if dt.TaskKey == "research" {
|
|
researchID = dt.ID
|
|
}
|
|
}
|
|
}
|
|
if researchID == 0 {
|
|
t.Fatal("expected research doc task instance id")
|
|
}
|
|
|
|
res, err := NewOrchestrator(svc).ResolveDocTask(ctx, 500, researchID)
|
|
if err != nil {
|
|
t.Fatalf("ResolveDocTask: %v", err)
|
|
}
|
|
if res.AuthorUserID != 0 || res.ReviewerUserID != 0 || res.ApproverUserID != 0 {
|
|
t.Fatalf("none duties must stay zero without creator fallback, got %+v", res)
|
|
}
|
|
}
|