use crate::Check;
use crate::CheckResult;
use crate::medic;
use pretty_assertions::assert_eq;
#[test]
fn test_medic() {
let checks = [
Check {
name: "Check 1",
func: || Ok((CheckResult::Ok, "All good".to_string())),
},
Check {
name: "Check 2",
func: || Ok((CheckResult::Warning, "Not so good\nNot at all".to_string())),
},
Check {
name: "Check 3",
func: || Ok((CheckResult::Fatal, "Very bad".to_string())),
},
];
let mut out_buf = anstream::StripStream::new(Vec::new());
let result = medic(&mut out_buf, checks.iter()).unwrap();
assert_eq!(result, CheckResult::Fatal);
let out_buf = out_buf.into_inner();
let out = String::from_utf8(out_buf).unwrap();
let expected = indoc::indoc! {"
RESULT CHECK MESSAGE
Ok Check 1 All good
Warning Check 2 Not so good
Not at all
Fatal Check 3 Very bad\n"};
assert_eq!(out, expected);
}