use super::sns::{FixtureSnsDiscoverySource, GOVERNANCE_A, INDEX_A, ROOT_A};
use crate::sns::report::tests::*;
pub(in crate::sns::report::tests) struct FixtureSnsCanisterSource;
delegate_sns_discovery!(FixtureSnsCanisterSource);
impl SnsCanisterSource for FixtureSnsCanisterSource {
fn fetch_sns_canisters<'a>(
&'a self,
_request: &'a SnsSourceRequest,
sns: &'a MainnetSns,
) -> crate::report::SourceFuture<'a, Result<MainnetSnsCanisterInventory, SnsHostError>> {
Box::pin(async move {
assert_eq!(sns.root_canister_id, ROOT_A);
Ok(MainnetSnsCanisterInventory {
inventory_method: SnsCanisterMethod::ListSnsCanisters,
health_method: SnsCanisterMethod::GetSnsCanistersSummary,
health_call_type: SnsCanisterCallType::IngressUpdate,
health_update_canister_list: false,
point_in_time_guaranteed: false,
canisters: vec![
SnsCanisterRow {
role: SnsCanisterRole::Extension,
canister_id: INDEX_A.to_string(),
status: None,
module_hash_hex: None,
cycles: None,
cycle_balance_status: SnsCanisterCycleBalanceStatus::Unavailable,
memory_size: None,
idle_cycles_burned_per_day: None,
controllers: Vec::new(),
},
SnsCanisterRow {
role: SnsCanisterRole::Root,
canister_id: ROOT_A.to_string(),
status: Some(SnsCanisterStatus::Running),
module_hash_hex: Some("01020304".to_string()),
cycles: Some("0".to_string()),
cycle_balance_status: SnsCanisterCycleBalanceStatus::ReportedZero,
memory_size: Some("2000000".to_string()),
idle_cycles_burned_per_day: Some("3000".to_string()),
controllers: vec![GOVERNANCE_A.to_string()],
},
],
health_query_gap: None,
gaps: vec![SnsCanisterGap {
kind: SnsCanisterGapKind::HealthUnsupported,
role: SnsCanisterRole::Extension,
inventory_canister_id: Some(INDEX_A.to_string()),
summary_canister_id: None,
}],
})
})
}
}