feat: add campaign configuration controls
This commit is contained in:
100
tests/campaign-validation.test.ts
Normal file
100
tests/campaign-validation.test.ts
Normal file
@@ -0,0 +1,100 @@
|
||||
import assert from "node:assert/strict";
|
||||
import test from "node:test";
|
||||
|
||||
import {
|
||||
validateCampaignCreateInput,
|
||||
validateCampaignUpdateInput,
|
||||
} from "../lib/campaign-validation";
|
||||
|
||||
test("campaign mutation validation normalizes and enforces fixed Germany context", () => {
|
||||
const payload = validateCampaignCreateInput({
|
||||
status: "active",
|
||||
recurrence: "daily",
|
||||
postalCode: "10115",
|
||||
radiusKm: 10,
|
||||
maxNewLeadsPerRun: 5,
|
||||
maxAuditsPerRun: 5,
|
||||
});
|
||||
|
||||
assert.equal(payload.countryCode, "DE");
|
||||
assert.equal(payload.country, "Deutschland");
|
||||
});
|
||||
|
||||
test("campaign validation rejects invalid German PLZ", () => {
|
||||
assert.throws(
|
||||
() =>
|
||||
validateCampaignCreateInput({
|
||||
status: "active",
|
||||
recurrence: "daily",
|
||||
postalCode: "1234",
|
||||
radiusKm: 10,
|
||||
maxNewLeadsPerRun: 5,
|
||||
maxAuditsPerRun: 5,
|
||||
}),
|
||||
(error: unknown) => {
|
||||
return (
|
||||
error instanceof Error &&
|
||||
error.message.includes("5") &&
|
||||
/PLZ|Postleitzahl/i.test(error.message)
|
||||
);
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test("campaign validation rejects decimal limits", () => {
|
||||
assert.throws(
|
||||
() =>
|
||||
validateCampaignCreateInput({
|
||||
status: "active",
|
||||
recurrence: "daily",
|
||||
postalCode: "10115",
|
||||
radiusKm: 10.5,
|
||||
maxNewLeadsPerRun: 5,
|
||||
maxAuditsPerRun: 5,
|
||||
}),
|
||||
(error: unknown) => {
|
||||
return error instanceof Error && error.message.includes("ganze");
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test("campaign validation rejects invalid recurrence/status in German", () => {
|
||||
assert.throws(
|
||||
() =>
|
||||
validateCampaignCreateInput({
|
||||
status: "running",
|
||||
recurrence: "daily",
|
||||
postalCode: "10115",
|
||||
radiusKm: 10,
|
||||
maxNewLeadsPerRun: 5,
|
||||
maxAuditsPerRun: 5,
|
||||
}),
|
||||
(error: unknown) => error instanceof Error && error.message.includes("Status"),
|
||||
);
|
||||
|
||||
assert.throws(
|
||||
() =>
|
||||
validateCampaignCreateInput({
|
||||
status: "active",
|
||||
recurrence: "hourly",
|
||||
postalCode: "10115",
|
||||
radiusKm: 10,
|
||||
maxNewLeadsPerRun: 5,
|
||||
maxAuditsPerRun: 5,
|
||||
}),
|
||||
(error: unknown) =>
|
||||
error instanceof Error && /Frequenz|ungültig/.test(error.message),
|
||||
);
|
||||
});
|
||||
|
||||
test("campaign update validation rejects partial Germany-context payloads", () => {
|
||||
assert.throws(
|
||||
() =>
|
||||
validateCampaignUpdateInput({
|
||||
countryCode: "DE",
|
||||
}),
|
||||
(error: unknown) =>
|
||||
error instanceof Error &&
|
||||
/vollständig|Deutschland-Kontext/.test(error.message),
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user