package bizdev import ( "context" "errors" "strings" "testing" "chat-agent-system/internal/projectworkflow" ) func TestEnsureRDevMainCompleted_RejectsWhenMissing(t *testing.T) { s := &Service{ completedMainHook: func(context.Context, int64) (bool, error) { return false, nil }, } err := s.ensureRDevMainCompleted(context.Background(), 42) if err == nil { t.Fatal("expected prerequisite error") } if !errors.Is(err, projectworkflow.ErrPrerequisiteNotMet) { t.Fatalf("want ErrPrerequisiteNotMet, got %v", err) } if !strings.Contains(err.Error(), "CDO") { t.Fatalf("message missing CDO hint: %v", err) } } func TestEnsureRDevMainCompleted_AllowsWhenCompleted(t *testing.T) { s := &Service{ completedMainHook: func(context.Context, int64) (bool, error) { return true, nil }, } if err := s.ensureRDevMainCompleted(context.Background(), 42); err != nil { t.Fatal(err) } } func TestResolveDocStage_SkipsMaturityForRD(t *testing.T) { // rd_ tasks without StageKey fall back to V0.5 (not maturity labels); StageKey wins. got := resolveDocStage(TaskRunRequest{TaskKey: "rd_proposal", StageKey: "RD01_planning"}) if got != "RD01_planning" { t.Fatalf("got %q", got) } }