fn doc() -> quarb_json::JsonAdapter {
quarb_json::JsonAdapter::parse(r#"{"a":{"x":1,"y":[1,2],"z":{"w":"s"}},"n":[1,2,2,3,10,null]}"#).unwrap()
}
fn outcome(q: &str) -> quarb::Outcome {
let d = doc();
quarb::Query::parse(q, &d).unwrap().run(&d, &quarb::Run::default()).unwrap()
}
#[test]
fn a_drawing_leaves_its_html_form_on_the_outcome() {
assert!(quarb::closes_with_drawing("/a @| tree(1; -k)"));
assert!(quarb::closes_with_drawing("/n/*:: @| histogram(3)"));
assert!(!quarb::closes_with_drawing("/a @| count"));
assert!(!quarb::closes_with_drawing("/a | tree"));
let o = outcome("/a @| tree(1; -k)");
let html = o.html.expect("the tree's html");
assert!(html.starts_with("<div class=\"quarb-tree\"><div class=\"controls\"><button"), "{html}");
assert!(html.contains("expand all") && html.contains("collapse all"), "{html}");
assert!(html.contains("<details open class=\"node\"><summary>/ <object></summary>"), "{html}");
assert!(html.contains("<details open class=\"node\"><summary>a <object></summary>"), "{html}");
assert!(html.contains("<div class=\"node\">x <number></div>"), "{html}");
assert!(html.contains("<div class=\"node\">y <array></div>"), "{html}");
assert!(html.ends_with("</details></details></div>"), "{html}");
let o = outcome("/a/z/w @| tree(0)");
let html = o.html.expect("the tree's html");
assert!(html.contains("<details open class=\"stub\"><summary>a/z</summary><div class=\"node\">w</div></details>"), "{html}");
let o = outcome("/n/*:: @| histogram(3)");
let html = o.html.expect("the histogram's html");
assert!(html.starts_with("<table class=\"quarb-table quarb-histogram\"><tbody>"), "{html}");
assert!(html.contains("<tr><td class=\"label\">1–4</td><td class=\"bar\"><div style=\"width:100.0%\"></div></td><td class=\"num\">4</td></tr>"), "{html}");
assert!(html.contains("<tr><td class=\"label\">4–7</td><td class=\"bar\"><div style=\"width:0.0%\"></div></td><td class=\"num\">0</td></tr>"), "{html}");
assert!(html.contains("<tr class=\"aside\"><td class=\"label\">null</td><td class=\"bar\"><div style=\"width:25.0%\"></div></td><td class=\"num\">1</td></tr>"), "{html}");
assert!(outcome("/a @| count").html.is_none());
assert!(quarb::TABLE_CSS.contains(".quarb-tree") && quarb::TABLE_CSS.contains(".quarb-histogram"));
}