ic-query 0.26.11

Internet Computer query library for NNS, SNS, ICRC, system canisters, and public network metadata
Documentation
#[cfg(feature = "host")]
use ic_query::cache::{
    CACHE_STATUS_REPORT_SCHEMA_VERSION, CacheFileStatus, CacheRefreshLockStatus,
    CacheStatusRequest, build_cache_status_report, cache_status_report_text,
};
use ic_query::cache::{
    CacheCollectionCompleteness, CacheRefreshAttemptStatus, CacheValidationStatus,
    validate_cache_collection_completeness,
};
#[cfg(feature = "host")]
use std::path::PathBuf;

#[test]
fn public_cache_models_preserve_evidence_without_host() {
    assert_eq!(CacheValidationStatus::Valid.as_str(), "ok");
    assert_eq!(CacheValidationStatus::Invalid.as_str(), "invalid");
    assert_eq!(CacheRefreshAttemptStatus::Running.as_str(), "running");
    assert_eq!(CacheRefreshAttemptStatus::Complete.as_str(), "complete");
    assert_eq!(CacheRefreshAttemptStatus::Failed.as_str(), "failed");

    let completeness = CacheCollectionCompleteness::api_exhausted(100, 2, 101, false);
    assert!(completeness.is_api_exhausted());
    assert_eq!(
        validate_cache_collection_completeness(&completeness, 101),
        Ok(())
    );
    assert_eq!(
        serde_json::to_value(completeness).expect("serialize completeness")["status"],
        "api_exhausted"
    );
}

#[cfg(feature = "host")]
#[test]
fn public_cache_status_api_is_local_and_constructible() {
    let cache_root = PathBuf::from("target/ic-query-cache-public-api-empty-root");
    let request = CacheStatusRequest::new(&cache_root, 1_700_000_000);
    let report = build_cache_status_report(&request).expect("local cache inventory");

    assert_eq!(report.schema_version, CACHE_STATUS_REPORT_SCHEMA_VERSION);
    assert_eq!(report.cache_root, cache_root.display().to_string());
    assert!(!report.cache_root_found);
    assert_eq!(report.cache_count, 0);
    assert_eq!(report.refresh_lock_count, 0);
    assert_eq!(CacheFileStatus::Unmanaged.as_str(), "unmanaged");
    assert_eq!(CacheRefreshLockStatus::Active.as_str(), "active");
    assert!(cache_status_report_text(&report).contains("cache_count: 0"));
}