ic-query 0.90.0

Internet Computer query library for CloudEngine, NNS, SNS, ICRC, system canisters, and public network metadata
Documentation
use super::*;

#[test]
fn typed_statuses_keep_stable_json_labels() {
    for (status, expected) in [
        (CacheValidationStatus::Valid, "ok"),
        (CacheValidationStatus::Invalid, "invalid"),
    ] {
        assert_eq!(status.as_str(), expected);
        assert_eq!(status.to_string(), expected);
        assert_eq!(
            serde_json::to_value(status).expect("serialize cache validation status"),
            serde_json::json!(expected)
        );
    }
    for (status, expected) in [
        (CacheRefreshAttemptStatus::Running, "running"),
        (CacheRefreshAttemptStatus::Complete, "complete"),
        (CacheRefreshAttemptStatus::Failed, "failed"),
    ] {
        assert_eq!(status.as_str(), expected);
        assert_eq!(status.to_string(), expected);
        assert_eq!(
            serde_json::from_value::<CacheRefreshAttemptStatus>(serde_json::json!(expected))
                .expect("deserialize refresh-attempt status"),
            status
        );
        assert_eq!(
            serde_json::to_value(status).expect("serialize refresh-attempt status"),
            serde_json::json!(expected)
        );
    }
    assert!(
        serde_json::from_value::<CacheRefreshAttemptStatus>(serde_json::json!("unknown")).is_err()
    );
    for (status, expected) in [
        (CacheHeaderStatus::Readable, "readable"),
        (CacheHeaderStatus::Invalid, "invalid"),
    ] {
        assert_eq!(status.as_str(), expected);
        assert_eq!(
            serde_json::to_value(status).expect("serialize cache header status"),
            serde_json::json!(expected)
        );
    }
    for (status, expected) in [
        (CacheAgeStatus::Fresh, "fresh"),
        (CacheAgeStatus::Stale, "stale"),
        (CacheAgeStatus::Unmanaged, "unmanaged"),
        (CacheAgeStatus::Unknown, "unknown"),
    ] {
        assert_eq!(status.as_str(), expected);
        assert_eq!(
            serde_json::to_value(status).expect("serialize cache age status"),
            serde_json::json!(expected)
        );
    }
    for (policy, expected) in [
        (CacheRecoveryPolicy::Automatic, "automatic"),
        (CacheRecoveryPolicy::Explicit, "explicit"),
        (CacheRecoveryPolicy::MissingOnly, "missing_only"),
        (CacheRecoveryPolicy::Unknown, "unknown"),
    ] {
        assert_eq!(policy.as_str(), expected);
        assert_eq!(
            serde_json::to_value(policy).expect("serialize cache recovery policy"),
            serde_json::json!(expected)
        );
    }
    for (status, expected) in [
        (CacheRefreshLockStatus::Active, "active"),
        (CacheRefreshLockStatus::Available, "available"),
        (CacheRefreshLockStatus::Invalid, "invalid"),
    ] {
        assert_eq!(status.as_str(), expected);
        assert_eq!(
            serde_json::to_value(status).expect("serialize refresh-lock status"),
            serde_json::json!(expected)
        );
    }
}