use super::settle_uncorroborated_absence;
use crate::types::ChiaQueryError;
#[test]
fn a_second_source_agreeing_makes_it_an_absence() {
let settled = settle_uncorroborated_absence::<&str>(Some(Ok(None)));
assert_eq!(settled.expect("two agreeing sources is an answer"), None);
}
#[test]
fn absence_nobody_can_corroborate_is_an_error_not_a_none() {
let settled = settle_uncorroborated_absence::<&str>(None);
assert!(
matches!(settled, Err(ChiaQueryError::UncorroboratedAbsence(_))),
"an uncorroborated absence must never surface as Ok(None): got {settled:?}"
);
}
#[test]
fn a_second_source_that_fails_leaves_it_uncorroborated() {
let settled = settle_uncorroborated_absence::<&str>(Some(Err(ChiaQueryError::CoinsetHttp(
"gateway timeout".into(),
))));
assert!(
matches!(settled, Err(ChiaQueryError::UncorroboratedAbsence(_))),
"a failed second opinion is not a confirmed first one: got {settled:?}"
);
}
#[test]
fn contradiction_between_the_tiers_is_surfaced() {
let settled = settle_uncorroborated_absence(Some(Ok(Some("the thing"))));
assert!(
matches!(settled, Err(ChiaQueryError::SourcesDisagree(_))),
"a disagreement is evidence, not a tie to break: got {settled:?}"
);
}