ic-query 0.93.3

Internet Computer query library for CloudEngine, NNS, SNS, ICRC, system canisters, and public network metadata
Documentation
use super::*;
use crate::{
    icrc::{IcrcAccountTransactionCacheRequest, load_cached_icrc_account_transactions},
    tests::temp_dir,
};
use ic_host_text::timestamp::parse_utc_timestamp_secs;

#[test]
fn publication_uses_the_callers_clock_and_elapsed_collection_duration() {
    let root = temp_dir("ic-query-icrc-account-collection-duration");
    let cache = IcrcAccountTransactionCacheRequest::new(
        &root,
        "https://icp-api.io",
        "ryjl3-tyaaa-aaaaa-aaaba-cai",
        "aaaaa-aa",
    );
    let request = IcrcAccountTransactionRefreshRequest::new(cache, 2_000_000_000, 100);
    let paths = cache_paths(&request.cache);
    let complete = IcrcAccountTransactionCollectionData {
        index_canister_id: "qhbym-qaaaa-aaaaa-aaafq-cai".to_string(),
        balance: "0".to_string(),
        token_symbol: "ICP".to_string(),
        decimals: 8,
        transactions: Vec::new(),
        page_count: 1,
        last_cursor: None,
    };
    let report =
        publish_complete_snapshot(&request, &paths, false, complete, Duration::from_secs(23))
            .unwrap();
    let cached = load_cached_icrc_account_transactions(&request.cache).unwrap();
    assert_eq!(
        parse_utc_timestamp_secs(&report.context.collection_started_at),
        Some(2_000_000_000)
    );
    assert_eq!(
        parse_utc_timestamp_secs(&report.context.collection_completed_at),
        Some(2_000_000_023)
    );
    assert_eq!(
        cached.snapshot.context.collection_completed_at,
        report.context.collection_completed_at
    );
    std::fs::remove_dir_all(root).unwrap();
}