From 586b332b5c1f87ead96ea29cf561e3d335259190 Mon Sep 17 00:00:00 2001 From: edochieblessing09-max Date: Wed, 26 Aug 2026 14:10:36 +0100 Subject: [PATCH] test: add unit test for approve_upgrade --- contracts/admin/src/lib.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/contracts/admin/src/lib.rs b/contracts/admin/src/lib.rs index 7064536b..e38d4090 100644 --- a/contracts/admin/src/lib.rs +++ b/contracts/admin/src/lib.rs @@ -3344,6 +3344,39 @@ mod tests { assert!(client.is_proposal_ready(&id)); } + #[test] + fn test_approve_upgrade() { + let env = Env::default(); + env.mock_all_auths(); + let contract_id = env.register(AdminContract, ()); + let client = AdminContractClient::new(&env, &contract_id); + let admin = Address::generate(&env); + let signer1 = Address::generate(&env); + let signer2 = Address::generate(&env); + + client.set_admin(&admin); + client.set_admin_pool(&vec![&env, admin.clone(), signer1.clone(), signer2.clone()], &3); + let id = client.create_proposal(&admin, &String::from_str(&env, "upgrade proposal")); + + let proposal: Proposal = env.as_contract(&contract_id, || { + env.storage().instance().get(&AdminKey::Proposal(id)).unwrap() + }); + assert_eq!(proposal.approvals.len(), 1); + + client.approve_proposal(&signer1, &id); + let proposal: Proposal = env.as_contract(&contract_id, || { + env.storage().instance().get(&AdminKey::Proposal(id)).unwrap() + }); + assert_eq!(proposal.approvals.len(), 2); + + client.approve_proposal(&signer2, &id); + let proposal: Proposal = env.as_contract(&contract_id, || { + env.storage().instance().get(&AdminKey::Proposal(id)).unwrap() + }); + assert_eq!(proposal.approvals.len(), 3); + assert!(client.is_proposal_ready(&id)); + } + #[test] #[should_panic(expected = "only admins can approve proposals")] fn test_approve_proposal_rejects_non_admin() {