feat(campaign): expose governed archive action

This commit is contained in:
2026-08-03 20:39:06 +02:00
parent d9195a2d2b
commit 3f3545f080
7 changed files with 79 additions and 8 deletions
@@ -0,0 +1,15 @@
import assert from "node:assert/strict";
import { readFileSync } from "node:fs";
const workspace = readFileSync("src/features/campaigns/CampaignWorkspace.tsx", "utf8");
const overview = readFileSync("src/features/campaigns/CampaignOverviewPage.tsx", "utf8");
const api = readFileSync("src/api/campaigns.ts", "utf8");
assert.match(workspace, /<CampaignOverviewPage settings=\{settings\} auth=\{auth\}/);
assert.match(overview, /hasScope\(auth, "campaigns:campaign:archive"\)/);
assert.match(overview, /archiveDialogOpen/);
assert.match(overview, /archive_campaign_confirmation/);
assert.match(overview, /await archiveCampaign\(settings, campaign\.id\)/);
assert.match(api, /\/api\/v1\/campaigns\/\$\{campaignId\}\/archive/);
console.log("Campaign lifecycle UI structural contract passed.");