baodan/baodanppt/scripts/test_clone_status_core.ts

37 lines
1.4 KiB
TypeScript

import assert from "node:assert/strict";
import { loadTemplateCatalog } from "../src/config/template-catalog.ts";
import { listTemplateAssets } from "../src/config/template-assets.ts";
import { hasCiCloneRenderer, hasIulCloneRenderer, hasSavingsCloneRenderer } from "../src/templates/clone-renderer-registry.ts";
const templateAssets = new Set(listTemplateAssets().map((asset) => asset.id));
const templates = loadTemplateCatalog();
const status = templates.map((template) => {
const sourceTemplateOk = !template.sourceTemplateAssetId || templateAssets.has(template.sourceTemplateAssetId);
const rendererOk = !template.cloneReady
? template.cloneRenderer == null
: template.planType === "savings"
? hasSavingsCloneRenderer(template.cloneRenderer)
: template.planType === "ci"
? hasCiCloneRenderer(template.cloneRenderer)
: template.planType === "iul"
? hasIulCloneRenderer(template.cloneRenderer)
: Boolean(template.cloneRenderer);
return {
id: template.id,
status: sourceTemplateOk && rendererOk ? "ok" : "blocked",
sourceTemplateOk,
rendererOk,
cloneReady: Boolean(template.cloneReady),
};
});
assert.ok(status.length > 0, "template catalog should not be empty");
for (const item of status) {
if (item.cloneReady) {
assert.equal(item.status, "ok", `cloneReady template should not be blocked: ${item.id}`);
}
}
console.log(JSON.stringify({ status: "ok", templates: status }, null, 2));