first
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
#!/bin/bash
|
||||
# Regression: oriental atlas design grammar hooks must survive engine HTML generation
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
source "$REPO_ROOT/tests/lib/graph-html-engine-helpers.sh"
|
||||
|
||||
test_oriental_design_contract_hooks() {
|
||||
local tmp_dir html
|
||||
tmp_dir="$(mktemp -d)"
|
||||
|
||||
build_graph_html_fixture "$tmp_dir"
|
||||
html="$tmp_dir/wiki/knowledge-graph.html"
|
||||
|
||||
assert_file_contains "$html" "node-layer"
|
||||
assert_file_contains "$html" "edge-layer"
|
||||
assert_file_contains "$html" "community-wash"
|
||||
assert_file_contains "$html" ".node[data-visual-role=\"landmark\"]"
|
||||
assert_file_contains "$html" ".node[data-visual-role=\"index-slip\"],"
|
||||
assert_file_contains "$html" ".node[data-visual-role=\"cinnabar-note\"]"
|
||||
assert_file_contains "$html" "dataset.visualRole"
|
||||
assert_file_contains "$html" "dataset.startNode"
|
||||
assert_file_contains "$html" "dataset.previewStart"
|
||||
assert_file_contains "$html" "node-kind"
|
||||
assert_file_contains "$html" "node-name"
|
||||
assert_file_contains "$html" "node-meta"
|
||||
assert_file_contains "$html" "var(--cinnabar)"
|
||||
|
||||
rm -rf "$tmp_dir"
|
||||
}
|
||||
|
||||
test_first_open_selection_contract() {
|
||||
ensure_graph_engine_dist
|
||||
node --input-type=module - <<'NODE' "$REPO_ROOT" || fail "first-open selection contract should hold"
|
||||
import assert from "node:assert/strict";
|
||||
import { pathToFileURL } from "node:url";
|
||||
import path from "node:path";
|
||||
|
||||
const repoRoot = process.argv[2];
|
||||
const {
|
||||
buildAtlasModel,
|
||||
deriveAtlasLayout,
|
||||
resolveAtlasVisibleSnapshot,
|
||||
resolveAtlasSelectedNodeId
|
||||
} = await import(pathToFileURL(path.join(repoRoot, "packages/graph-engine/dist/engine.esm.js")).href);
|
||||
|
||||
const graph = {
|
||||
meta: { wiki_title: "首屏预览测试" },
|
||||
nodes: [
|
||||
{ id: "start", label: "推荐起点", type: "topic", community: "main", confidence: "EXTRACTED", content: "# 推荐起点\n\n从这里开始。" },
|
||||
{ id: "next", label: "相邻节点", type: "entity", community: "main", confidence: "EXTRACTED" }
|
||||
],
|
||||
edges: [{ id: "edge", from: "start", to: "next", type: "EXTRACTED", weight: 0.9 }],
|
||||
learning: { entry: { recommended_start_node_id: "start" } }
|
||||
};
|
||||
|
||||
const model = buildAtlasModel(graph);
|
||||
const layout = deriveAtlasLayout(model);
|
||||
const snapshot = resolveAtlasVisibleSnapshot(model, layout, {
|
||||
activeCommunityId: "all",
|
||||
focusMode: "all",
|
||||
query: "",
|
||||
selectedNodeId: null,
|
||||
filters: { EXTRACTED: true, INFERRED: true, AMBIGUOUS: true, UNVERIFIED: true }
|
||||
});
|
||||
|
||||
assert.equal(snapshot.starts[0].node.id, "start");
|
||||
assert.equal(snapshot.startNodeIds.start, true);
|
||||
assert.equal(snapshot.importantNodeIds.start, true);
|
||||
assert.equal(resolveAtlasSelectedNodeId(model, snapshot, null), null);
|
||||
assert.equal(resolveAtlasSelectedNodeId(model, snapshot, "start"), "start");
|
||||
NODE
|
||||
}
|
||||
|
||||
main() {
|
||||
test_oriental_design_contract_hooks
|
||||
test_first_open_selection_contract
|
||||
echo "PASS: oriental design contract regression coverage"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user