ic-query 0.90.0

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

#[derive(Clone, Debug, Eq, PartialEq)]
struct Row(&'static str);

#[test]
fn resolves_normalized_text_exactly_and_principals_by_prefix() {
    let text_rows = [Row("dc1")];
    assert_eq!(
        resolve_nns_inventory_row(
            &text_rows,
            |row| row.0,
            " DC1 ",
            NnsInventoryInputKind::Text,
            "id"
        ),
        Ok((0, "id".to_string()))
    );

    assert_eq!(
        resolve_nns_inventory_row(
            &text_rows,
            |row| row.0,
            " DC ",
            NnsInventoryInputKind::Text,
            "id"
        ),
        Ok((0, "id_prefix".to_string()))
    );

    let principal_rows = [Row("ryjl3-tyaaa-aaaaa-aaaba-cai")];
    assert_eq!(
        resolve_nns_inventory_row(
            &principal_rows,
            |row| row.0,
            "ryjl",
            NnsInventoryInputKind::Principal,
            "principal",
        ),
        Ok((0, "principal_prefix".to_string(),))
    );
}

#[test]
fn preserves_not_found_input_and_ambiguous_matches() {
    let rows = [Row("dc1"), Row("dc2")];
    assert_eq!(
        resolve_nns_inventory_row(&rows, |row| row.0, " ", NnsInventoryInputKind::Text, "id"),
        Err(NnsInventoryResolveError::NotFound {
            input: " ".to_string(),
        })
    );
    assert_eq!(
        resolve_nns_inventory_row(&rows, |row| row.0, "DC", NnsInventoryInputKind::Text, "id"),
        Err(NnsInventoryResolveError::Ambiguous {
            prefix: "dc".to_string(),
            matches: vec!["dc1".to_string(), "dc2".to_string()],
        })
    );
}