feat: integrate operator queue into Campaign
This commit is contained in:
@@ -5,8 +5,10 @@ import { fileURLToPath } from "node:url";
|
||||
|
||||
const here = dirname(fileURLToPath(import.meta.url));
|
||||
const source = readFileSync(resolve(here, "../src/features/operator/OperatorQueuePage.tsx"), "utf8");
|
||||
const campaignModulePage = readFileSync(resolve(here, "../src/features/campaigns/CampaignModulePage.tsx"), "utf8");
|
||||
const moduleSource = readFileSync(resolve(here, "../src/module.ts"), "utf8");
|
||||
const translations = readFileSync(resolve(here, "../src/i18n/generatedTranslations.ts"), "utf8");
|
||||
const backendRouter = readFileSync(resolve(here, "../../src/govoplan_campaign/backend/router.py"), "utf8");
|
||||
const jobQueries = readFileSync(resolve(here, "../../src/govoplan_campaign/backend/services/job_queries.py"), "utf8");
|
||||
const responseSecurity = readFileSync(resolve(here, "../../src/govoplan_campaign/backend/response_security.py"), "utf8");
|
||||
|
||||
assert.match(source, /<DataGrid/);
|
||||
@@ -56,12 +58,29 @@ assert.match(source, /deliveryResultSummary[\s\S]*send_status[\s\S]*imap_status/
|
||||
assert.match(source, /durableResultText[\s\S]*slice\(0, 239\)/);
|
||||
assert.match(source, /permissions\.canOpenReport[\s\S]*you_do_not_have_permission/);
|
||||
assert.doesNotMatch(source, /claim_token|eml_local_path|storage_key|smtp_transport_revision|eml_sha256|message_id_header|smtp_response|provider_response|resolved_attachments/);
|
||||
assert.match(backendRouter, /"last_error": public_delivery_result_message\([\s\S]*last_error=job\.last_error/);
|
||||
assert.match(jobQueries, /"last_error": public_delivery_result_message\([\s\S]*last_error=job\.last_error/);
|
||||
assert.match(responseSecurity, /Map persisted provider text to a stable business-safe explanation/);
|
||||
assert.match(responseSecurity, /SMTP delivery failed; an operator can inspect restricted diagnostics\./);
|
||||
assert.doesNotMatch(source, /window\.alert\s*\(/);
|
||||
assert.doesNotMatch(source, /function QueuePressureGrid|function OperatorJob/);
|
||||
assert.doesNotMatch(source, /humanize\(/);
|
||||
assert.match(campaignModulePage, /<ModuleSubnav/);
|
||||
assert.match(campaignModulePage, /id: "campaigns"/);
|
||||
assert.match(campaignModulePage, /id: "queue"/);
|
||||
assert.match(campaignModulePage, /navigate\(section === "queue" \? "\/campaigns\/queue" : "\/campaigns"\)/);
|
||||
assert.match(campaignModulePage, /active === "queue"[\s\S]*<OperatorQueuePage/);
|
||||
assert.match(moduleSource, /path: "\/campaigns\/queue"/);
|
||||
assert.match(moduleSource, /path: "\/operator"[\s\S]*createElement\(Navigate, \{ to: "\/campaigns\/queue", replace: true \}\)/);
|
||||
assert.doesNotMatch(moduleSource, /to: "\/operator"/);
|
||||
assert.ok(
|
||||
moduleSource.indexOf('{ path: "/operator"') < moduleSource.indexOf('{ path: "/campaigns/queue"'),
|
||||
"the canonical Campaign route must replace the legacy alias in the shared view-surface catalogue"
|
||||
);
|
||||
assert.equal(
|
||||
moduleSource.split("surfaceId: operatorQueueSurface").length - 1,
|
||||
2,
|
||||
"the legacy redirect and canonical queue route share one configurable view surface"
|
||||
);
|
||||
|
||||
const localized = new Map([
|
||||
["i18n:govoplan-campaign.claimed.83c87884", ["Claimed", "Beansprucht"]],
|
||||
|
||||
Reference in New Issue
Block a user