urma-node-client 0.5.0

Optional local URMA service client without daemon or peer runtime
Documentation
use super::ServiceStatus;
use serde_json::Value;

fn status_without(field: &str) -> Value {
    let mut value = serde_json::to_value(ServiceStatus::default()).unwrap();
    value.as_object_mut().unwrap().remove(field).unwrap();
    value
}

#[test]
fn chain_target_absent_reads_as_unknown() {
    let status: ServiceStatus = serde_json::from_value(status_without("chain_target")).unwrap();
    assert_eq!(status.chain_target, None);
}

#[test]
fn chain_target_round_trips_absolute_height() {
    let mut status = ServiceStatus::default();
    status.chain_target = Some(4_913_600);
    let value = serde_json::to_value(&status).unwrap();
    assert_eq!(value["chain_target"], 4_913_600);
    let back: ServiceStatus = serde_json::from_value(value).unwrap();
    assert_eq!(back.chain_target, Some(4_913_600));
}

#[test]
fn chain_peers_absent_reads_as_zero() {
    let status: ServiceStatus = serde_json::from_value(status_without("chain_peers")).unwrap();
    assert_eq!(status.chain_peers, 0);
}