Use business campaign rules instead of status errors
Introduce accessreview.Campaign with draft/deletable predicates and operation-specific client errors. Drop errUnlessDraftCampaign and status-to-sentinel switches in the service layer. Signed-off-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Bryan FRIMIN <bryan@frimin.fr>
This commit is contained in:
@@ -52,27 +52,39 @@ func TestCampaignClientErrors(t *testing.T) {
|
||||
sentinel: accessreview.ErrCampaignMissingSources,
|
||||
},
|
||||
{
|
||||
name: "in progress",
|
||||
err: accessreview.NewCampaignInProgressError(campaignID),
|
||||
wantText: fmt.Sprintf("access review campaign %q is in progress", campaignID),
|
||||
sentinel: accessreview.ErrCampaignInProgress,
|
||||
name: "not draft",
|
||||
err: accessreview.NewCampaignNotDraftError(campaignID),
|
||||
wantText: fmt.Sprintf("access review campaign %q is not in draft", campaignID),
|
||||
sentinel: accessreview.ErrCampaignNotDraft,
|
||||
},
|
||||
{
|
||||
name: "pending actions",
|
||||
err: accessreview.NewCampaignPendingActionsError(campaignID),
|
||||
wantText: fmt.Sprintf("access review campaign %q is pending actions", campaignID),
|
||||
sentinel: accessreview.ErrCampaignPendingActions,
|
||||
name: "not deletable",
|
||||
err: accessreview.NewCampaignNotDeletableError(campaignID),
|
||||
wantText: fmt.Sprintf(
|
||||
"access review campaign %q cannot be deleted unless it is draft or cancelled",
|
||||
campaignID,
|
||||
),
|
||||
sentinel: accessreview.ErrCampaignNotDeletable,
|
||||
},
|
||||
{
|
||||
name: "not pending actions",
|
||||
err: accessreview.NewCampaignNotPendingActionsError(campaignID),
|
||||
wantText: fmt.Sprintf(
|
||||
"access review campaign %q cannot be closed unless it is pending actions",
|
||||
campaignID,
|
||||
),
|
||||
sentinel: accessreview.ErrCampaignNotPendingActions,
|
||||
},
|
||||
{
|
||||
name: "completed",
|
||||
err: accessreview.NewCampaignCompletedError(campaignID),
|
||||
wantText: fmt.Sprintf("access review campaign %q is completed", campaignID),
|
||||
wantText: fmt.Sprintf("access review campaign %q is already completed", campaignID),
|
||||
sentinel: accessreview.ErrCampaignCompleted,
|
||||
},
|
||||
{
|
||||
name: "cancelled",
|
||||
err: accessreview.NewCampaignCancelledError(campaignID),
|
||||
wantText: fmt.Sprintf("access review campaign %q is cancelled", campaignID),
|
||||
wantText: fmt.Sprintf("access review campaign %q is already cancelled", campaignID),
|
||||
sentinel: accessreview.ErrCampaignCancelled,
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user