Files
pitchfast/tests/dashboard-model.test.ts

52 lines
1.5 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import {
dashboardKpis,
dashboardNavigation,
pipelineStages,
reviewQueue,
} from "../lib/dashboard-model";
type NavigationItem = { label: string; href: string };
type PipelineStage = { title: string; count: number };
type ReviewQueueItem = { title: string };
test("dashboardNavigation contains the expected sidebar routes in order", () => {
assert.deepEqual(
dashboardNavigation.map((item: NavigationItem) => [item.label, item.href]),
[
["Dashboard", "/dashboard"],
["Campaigns", "/dashboard/campaigns"],
["Leads", "/dashboard/leads"],
["Audits", "/dashboard/audits"],
["Outreach", "/dashboard/outreach"],
["Analytics", "/dashboard/analytics"],
["Blacklist", "/dashboard/blacklist"],
["Settings", "/dashboard/settings"],
],
);
});
test("pipelineStages keep the first-screen workflow focused on pipeline overview", () => {
assert.deepEqual(
pipelineStages.map((stage: PipelineStage) => stage.title),
["Kampagnen", "Lead-Recherche", "Audit-Freigabe", "Outreach"],
);
assert.equal(
pipelineStages.every((stage: PipelineStage) => stage.count >= 0),
true,
);
});
test("dashboardKpis and reviewQueue expose the above-the-fold dashboard summary", () => {
assert.equal(dashboardKpis.length, 4);
assert.equal(reviewQueue.length, 3);
assert.equal(
reviewQueue.some((item: ReviewQueueItem) =>
item.title.includes("Audit-Freigabe"),
),
true,
);
});