67 lines
2.6 KiB
TypeScript
67 lines
2.6 KiB
TypeScript
import { expect, test } from "bun:test";
|
|
|
|
import { renderNodeStatus } from "./cicd-node-status";
|
|
|
|
const next = {
|
|
status: "bun scripts/cli.ts cicd status --node NC01",
|
|
history: "bun scripts/cli.ts platform-infra pipelines-as-code history --target NC01",
|
|
fixAutomaticDelivery: { reference: ".agents/skills/unidesk-cicd/SKILL.md" },
|
|
};
|
|
|
|
function result(status: "ready" | "warning" | "blocked", consumers: Array<Record<string, unknown>>): Record<string, unknown> {
|
|
return {
|
|
ok: status === "ready",
|
|
node: "NC01",
|
|
target: { id: "NC01" },
|
|
summary: {
|
|
ready: status === "ready",
|
|
status,
|
|
code: status === "ready" ? "cicd-node-ready" : status === "warning" ? "cicd-node-no-consumers" : "cicd-node-blocked",
|
|
total: consumers.length,
|
|
readyCount: consumers.filter((consumer) => consumer.ready === true).length,
|
|
blockedCount: consumers.filter((consumer) => consumer.ready !== true).length,
|
|
elapsedMs: 12,
|
|
},
|
|
consumers,
|
|
next,
|
|
};
|
|
}
|
|
|
|
const readyConsumer = {
|
|
consumer: "platform-infra-gitea-nc01",
|
|
ready: true,
|
|
pipelineStatus: "Succeeded",
|
|
durationSeconds: 9,
|
|
sourceCommit: "a".repeat(40),
|
|
gitopsCommit: "b".repeat(40),
|
|
argo: { sync: "Synced", health: "Healthy", revisionRelation: { relation: "exact" } },
|
|
runtime: { readyReplicas: 1, replicas: 1, digest: `sha256:${"c".repeat(64)}` },
|
|
reason: "ready",
|
|
latestPipelineRun: "platform-infra-gitea-nc01-fixture",
|
|
digest: `sha256:${"c".repeat(64)}`,
|
|
imageStatus: "-",
|
|
diagnostics: { hint: "GitOps-only consumer is ready", registry: { applicability: "not-configured", status: "not-configured", present: null } },
|
|
};
|
|
|
|
test("node status renderer is non-empty for zero consumers, ready, warning, and blocked projections", () => {
|
|
const fixtures = [
|
|
result("warning", []),
|
|
result("ready", [readyConsumer]),
|
|
result("warning", [{ ...readyConsumer, ready: false, reason: "diagnostics-warning" }]),
|
|
result("blocked", [{ ...readyConsumer, ready: false, reason: "pac-registry-missing" }]),
|
|
];
|
|
for (const fixture of fixtures) {
|
|
const rendered = renderNodeStatus(fixture, true).renderedText;
|
|
expect(rendered.trim().length).toBeGreaterThan(0);
|
|
expect(rendered).toContain("CI/CD NODE STATUS");
|
|
expect(rendered).toContain("NEXT");
|
|
}
|
|
});
|
|
|
|
test("node full renderer shows registry N/A without hiding digest evidence", () => {
|
|
const rendered = renderNodeStatus(result("ready", [readyConsumer]), true).renderedText;
|
|
expect(rendered).toContain("N/A");
|
|
expect(rendered).toContain("sha256:");
|
|
expect(rendered).toContain("platform-infra-gitea-nc01-fixture");
|
|
});
|