Files
Agent-System/internal/workflow/runtime/orchestrator_test.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)
}
}