use json_to_table::parse;
use serde_json::json;
use tabled::settings::Style;
#[test]
fn parse_json_1_test() {
let value = json!(
{"widget": {
"debug": "on",
"window": {
"height": 500
},
"image": {
"src": "Images/Sun.png",
"alignment": "center"
},
"text": {
"data": "Click Here",
}
}}
);
let table = parse(&value).with(Style::extended()).to_string();
assert_eq!(
table,
concat!(
"╔════════╦═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗\n",
"║ widget ║ {\"debug\":\"on\",\"image\":{\"alignment\":\"center\",\"src\":\"Images/Sun.png\"},\"text\":{\"data\":\"Click Here\"},\"window\":{\"height\":500}} ║\n",
"╚════════╩═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝",
)
);
}
#[test]
fn parse_json_2_test() {
let value = json!(
{
"glossary": {
"title": "e",
"G": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"GlossDef": {
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
);
let table = parse(&value).with(Style::modern()).to_string();
assert_eq!(
table,
concat!(
"┌──────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\n",
"│ glossary │ {\"G\":{\"GlossList\":{\"GlossEntry\":{\"GlossDef\":{\"GlossSeeAlso\":[\"GML\",\"XML\"]},\"GlossSee\":\"markup\",\"ID\":\"SGML\"}},\"title\":\"S\"},\"title\":\"e\"} │\n",
"└──────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘",
)
);
}
#[test]
fn general_json_3_test() {
let value = json!(
{
"header": "SVG Viewer",
"items": [
{"id": "Open"},
{"id": "OpenNew", "label": "Open New"},
null,
{"id": "Help"},
{"id": "About", "label": "About Adobe CVG Viewer..."}
]
}
);
let table = parse(&value).with(Style::modern()).to_string();
assert_eq!(
table,
concat!(
"┌────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐\n",
"│ header │ SVG Viewer │\n",
"├────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤\n",
"│ items │ [{\"id\":\"Open\"},{\"id\":\"OpenNew\",\"label\":\"Open New\"},null,{\"id\":\"Help\"},{\"id\":\"About\",\"label\":\"About Adobe CVG Viewer...\"}] │\n",
"└────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘",
)
);
}
#[test]
fn parse_map_empty_entity_plain_0() {
let value = json!(
{
"field1" : {},
"field2": "Value",
"field3" : {},
"field4": 3,
"field5" : {}
}
);
let table = parse(&value).with(Style::modern()).to_string();
assert_eq!(
table,
concat!(
"┌────────┬───────┐\n",
"│ field1 │ {} │\n",
"├────────┼───────┤\n",
"│ field2 │ Value │\n",
"├────────┼───────┤\n",
"│ field3 │ {} │\n",
"├────────┼───────┤\n",
"│ field4 │ 3 │\n",
"├────────┼───────┤\n",
"│ field5 │ {} │\n",
"└────────┴───────┘",
)
);
}
#[test]
fn parse_list_empty_entity_plain_0() {
let value = json!([{}, "field1", {}, "field2", {}]);
let table = parse(&value).with(Style::modern()).to_string();
assert_eq!(
table,
concat!(
"┌────┬────────┬────┬────────┬────┐\n",
"│ {} │ field1 │ {} │ field2 │ {} │\n",
"└────┴────────┴────┴────────┴────┘",
)
);
}
#[test]
fn parse_list_empty_entity_plain_1() {
let value = json!([[], "field1", [], "field2", []]);
let table = parse(&value).with(Style::modern()).to_string();
assert_eq!(
table,
concat!(
"┌────┬────────┬────┬────────┬────┐\n",
"│ [] │ field1 │ [] │ field2 │ [] │\n",
"└────┴────────┴────┴────────┴────┘",
)
);
}
#[test]
fn parse_list_empty_entity_plain_2() {
let value = json!([{}, {}, {}]);
let table = parse(&value).with(Style::modern()).to_string();
assert_eq!(
table,
concat!(
"┌────┬────┬────┐\n",
"│ {} │ {} │ {} │\n",
"└────┴────┴────┘",
)
);
}