diff --git a/pallets/governance/src/application.rs b/pallets/governance/src/application.rs index a29b6b2..2e6a2df 100644 --- a/pallets/governance/src/application.rs +++ b/pallets/governance/src/application.rs @@ -165,3 +165,9 @@ pub(crate) fn resolver_expired_applications(current_block: Blo crate::Pallet::::deposit_event(crate::Event::::ApplicationExpired(application.id)); } } + +pub(crate) fn exists_for_agent_key(key: &AccountIdOf) -> bool { + crate::AgentApplications::::iter().any(|(_, application)| { + application.agent_key == *key && application.status == ApplicationStatus::Open + }) +} diff --git a/pallets/governance/tests/application.rs b/pallets/governance/tests/application.rs index 6dd2605..786132c 100644 --- a/pallets/governance/tests/application.rs +++ b/pallets/governance/tests/application.rs @@ -1,3 +1,4 @@ +use pallet_governance::application::ApplicationStatus; use pallet_governance::AgentApplications; use pallet_governance::GlobalGovernanceConfig; use test_utils::*; @@ -46,6 +47,13 @@ fn whitelist_executes_application_correctly() { assert!(pallet_governance::whitelist::is_whitelisted::( &adding_key )); + + let application = + pallet_governance::AgentApplications::::get(application_id).unwrap(); + assert_eq!( + application.status, + ApplicationStatus::Resolved { accepted: true } + ); }); } @@ -90,5 +98,47 @@ fn application_denied_doesnt_add_to_whitelist() { assert!(!pallet_governance::whitelist::is_whitelisted::( &adding_key )); + + let application = + pallet_governance::AgentApplications::::get(application_id).unwrap(); + assert_eq!( + application.status, + ApplicationStatus::Resolved { accepted: false } + ); + }); +} + +#[test] +fn application_expires() { + new_test_ext().execute_with(|| { + let key = 0; + let adding_key = 1; + pallet_governance::Curators::::insert(key, ()); + + let proposal_cost = GlobalGovernanceConfig::::get().agent_application_cost; + let data = "test".as_bytes().to_vec(); + + add_balance(key, proposal_cost + 1); + + assert_ok!(pallet_governance::Pallet::::submit_application( + get_origin(key), + adding_key, + data.clone(), + )); + + let mut application_id: u32 = u32::MAX; + for (_, value) in AgentApplications::::iter() { + assert_eq!(value.agent_key, adding_key); + assert_eq!(value.data, data); + application_id = value.id; + } + + step_block( + pallet_governance::GlobalGovernanceConfig::::get().agent_application_expiration, + ); + + let application = + pallet_governance::AgentApplications::::get(application_id).unwrap(); + assert_eq!(application.status, ApplicationStatus::Expired); }); }