45 lines
2.0 KiB
JavaScript
45 lines
2.0 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { readFileSync } from "node:fs";
|
|
import { resolve } from "node:path";
|
|
|
|
const root = resolve(import.meta.dirname, "..");
|
|
const read = (path) => readFileSync(resolve(root, path), "utf8");
|
|
|
|
const overview = read("src/features/admin/AdminOverviewPanel.tsx");
|
|
const settings = read("src/features/admin/SystemSettingsPanel.tsx");
|
|
const changes = read("src/features/admin/ConfigurationChangesPanel.tsx");
|
|
const packages = read("src/features/admin/ConfigurationPackagesPanel.tsx");
|
|
const templates = read("src/features/admin/GovernanceTemplatesPanel.tsx");
|
|
const modules = read("src/features/admin/ModuleManagementPanel.tsx");
|
|
const moduleSource = read("src/module.ts");
|
|
const allSource = [overview, settings, changes, packages, templates, modules].join("\n");
|
|
|
|
for (const source of [overview, settings, changes, packages, templates, modules]) {
|
|
assert.match(source, /AdminPageLayout/);
|
|
assert.match(source, /DocumentationHelpLink/);
|
|
assert.match(source, /disabledReason|help=/);
|
|
}
|
|
|
|
for (const source of [changes, packages, templates, modules]) {
|
|
assert.match(source, /ConfirmDialog/);
|
|
}
|
|
|
|
assert.match(changes, /DataGrid/);
|
|
assert.match(packages, /ReferenceSelect/);
|
|
assert.match(packages, /manualReferences/);
|
|
assert.match(packages, /reviewedFingerprint === currentFingerprint/);
|
|
assert.match(packages, /RequiredDataInputs/);
|
|
assert.match(packages, /type=\{item\.secret \? "password"/);
|
|
assert.match(packages, /ConfigurationRollbackState/);
|
|
assert.match(packages, /result\.provenance/);
|
|
assert.match(templates, /TableActionGroup/);
|
|
assert.match(modules, /StageRail/);
|
|
assert.match(modules, /ActionBlockerHint/);
|
|
assert.match(moduleSource, /version: "0\.1\.8"/);
|
|
|
|
assert.doesNotMatch(overview, /title="(?:ADMINISTRATION|GLOBAL|TENANT|GROUP|USER)"/);
|
|
assert.doesNotMatch(allSource, /window\.(alert|confirm|prompt)\s*\(/);
|
|
assert.doesNotMatch(allSource, /@govoplan\/(?!core-webui)[^"']+-webui\//);
|
|
|
|
console.log("Admin interface pattern-language checks passed.");
|