42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { readFile } from "node:fs/promises";
|
|
import { test } from "node:test";
|
|
|
|
const sourceRoot = new URL("../src/", import.meta.url);
|
|
|
|
async function read(relativePath) {
|
|
return readFile(new URL(relativePath, sourceRoot), "utf8");
|
|
}
|
|
|
|
test("artifact health remains a bounded read-only data feature", async () => {
|
|
const [
|
|
productModel,
|
|
workspaceHub,
|
|
core,
|
|
workspace,
|
|
featureStyles,
|
|
styles,
|
|
] = await Promise.all([
|
|
read("productModel.ts"),
|
|
read("workspaces/Workspaces.tsx"),
|
|
read("core/data/artifactHealth.ts"),
|
|
read("workspaces/data/ArtifactHealthWorkspace.tsx"),
|
|
read("styles/artifact-health.css"),
|
|
read("styles.css"),
|
|
]);
|
|
|
|
assert.match(productModel, /kind: "artifact-health"/);
|
|
assert.match(workspaceHub, /<ArtifactHealthWorkspace \/>/);
|
|
assert.match(core, /\/api\/v1\/data\/artifact-health/);
|
|
assert.doesNotMatch(core, /@nodedc\/ui-react/);
|
|
assert.match(workspace, /fetchArtifactHealth/);
|
|
assert.match(workspace, /POLL_MILLISECONDS\s*=\s*30_000/);
|
|
assert.doesNotMatch(workspace, /delete|deduplicat|migration.*fetch/i);
|
|
assert.doesNotMatch(
|
|
featureStyles,
|
|
/\bborder:\s*1px\s+solid/,
|
|
"Artifact health must not add decorative perimeter outlines",
|
|
);
|
|
assert.match(styles, /artifact-health\.css/);
|
|
});
|