feat(cli): surface the composite doc in the graph viewer (#125)
The viewer threads the model's doc through normalizeModel into both composite view states — appended to INFO.B (collapsed box) and INFO.C (expanded cluster frame) — and shows the root composite's doc as a muted header line (#rootdoc span in GRAPH_HEAD, empty when absent; the DOM population sits in the browser-only block, the same boundary as the breadcrumb). viewer_tooltip.mjs pins the doc'd cases beside the byte-exact un-doc'd pins; sample-model.json gains the additive doc key; e2e drives aura graph over a nested-doc blueprint into the emitted page. closes #125
This commit is contained in:
@@ -1040,6 +1040,37 @@ fn graph_doc_field_moves_content_id_but_not_identity_id() {
|
||||
);
|
||||
}
|
||||
|
||||
/// Property (#125 viewer/#3, nested-composite doc through the real render
|
||||
/// pipeline): the sibling test above only proves a ROOT-level `doc` reaches
|
||||
/// the rendered page — the viewer threads a composite's doc onto its own
|
||||
/// tooltip (INFO.B/INFO.C in graph-viewer.js), which needs the doc present on
|
||||
/// a NESTED composite def, not just the root. `aura graph <file>` over a
|
||||
/// blueprint whose one node is a nested composite carrying `doc` must embed
|
||||
/// that exact string in the emitted page's `composites` section of
|
||||
/// `window.AURA_MODEL` — the composite-def half of `graph_model.rs`'s
|
||||
/// `doc_fragment`, exercised through the actual file-load -> render CLI
|
||||
/// binary, not just the library function called directly.
|
||||
#[test]
|
||||
fn graph_render_embeds_a_nested_composites_doc() {
|
||||
let out = std::process::Command::new(BIN)
|
||||
.arg("graph")
|
||||
.arg(fixture("nested_doc_blueprint.json"))
|
||||
.output()
|
||||
.expect("spawn aura graph <blueprint>");
|
||||
assert_eq!(
|
||||
out.status.code(),
|
||||
Some(0),
|
||||
"render exit: {:?}\nstderr: {}",
|
||||
out.status,
|
||||
String::from_utf8_lossy(&out.stderr)
|
||||
);
|
||||
let html = String::from_utf8(out.stdout).expect("utf-8 stdout");
|
||||
assert!(
|
||||
html.contains(r#","doc":"momentum leg: change over a lookback, gated by the trend sign""#),
|
||||
"rendered page does not embed the nested composite's doc: {html}"
|
||||
);
|
||||
}
|
||||
|
||||
/// The `gang` op's arity refusal (fewer than two members) reads as prose at the
|
||||
/// binary seam, attributed to its op index, never the raw `GangArity` Debug name.
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user