Release govoplan-campaign v0.1.28: stabilize saving, review and delivery recovery
Module Package Release / publish-packages (push) Successful in 12s
Module Package Release / publish-packages (push) Successful in 12s
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import assert from "node:assert/strict";
|
||||
import test from "node:test";
|
||||
import { groupCampaignValidationIssues } from "../src/features/campaigns/review/validationIssueGroups.ts";
|
||||
|
||||
const cause = { code: "missing_required_attachment", severity: "warning", path: "/entries/recipient-1/attachments/0", message: "No file matched filter" };
|
||||
const outcome = { code: "missing_attachment_coverage", severity: "info", path: "/entries/recipient-1", message: "Policy excludes this message without attachments" };
|
||||
|
||||
test("one grouped condition preserves the missing-rule cause and policy outcome regardless of order", () => {
|
||||
for (const records of [[cause, outcome], [outcome, cause]]) {
|
||||
const groups = groupCampaignValidationIssues(records);
|
||||
assert.equal(groups.length, 1);
|
||||
assert.deepEqual(groups[0].causes, [cause]);
|
||||
assert.deepEqual(groups[0].outcomes, [outcome]);
|
||||
assert.deepEqual(groups[0].evidence, records);
|
||||
assert.equal(groups[0].severity, "warning");
|
||||
}
|
||||
});
|
||||
|
||||
test("different recipients, unmatched rule without coverage, and unrelated errors are never collapsed", () => {
|
||||
const email = { code: "missing_email", severity: "error", path: "/entries/recipient-1", message: "No address" };
|
||||
const other = { ...cause, path: "/entries/recipient-2/attachments/0" };
|
||||
const groups = groupCampaignValidationIssues([cause, outcome, email, other]);
|
||||
assert.equal(groups.length, 3);
|
||||
assert.deepEqual(groups[1].evidence, [email]);
|
||||
assert.deepEqual(groups[2].evidence, [other]);
|
||||
});
|
||||
|
||||
test("multiple rule causes remain visible and a real block is not downgraded by an informational outcome", () => {
|
||||
const blocked = { ...cause, severity: "error", path: "/entries/recipient-1/attachments/1" };
|
||||
const [group] = groupCampaignValidationIssues([cause, blocked, outcome]);
|
||||
assert.equal(group.severity, "error");
|
||||
assert.equal(group.causes.length, 2);
|
||||
assert.equal(group.evidence.length, 3);
|
||||
});
|
||||
Reference in New Issue
Block a user