From 2e40d556909403ff8101a351ba43be5ce96f5018 Mon Sep 17 00:00:00 2001 From: Dopey Date: Wed, 25 Mar 2026 19:58:41 +0100 Subject: [PATCH 1/2] test(rewards): cover contract edge cases --- contracts/rewards/src/test.rs | 52 +++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/contracts/rewards/src/test.rs b/contracts/rewards/src/test.rs index 4e12aa54..57c36db7 100644 --- a/contracts/rewards/src/test.rs +++ b/contracts/rewards/src/test.rs @@ -52,3 +52,55 @@ fn test_metadata() { assert_eq!(metadata.0, name); assert_eq!(metadata.1, symbol); } + +#[test] +fn test_claim_more_than_balance_errors() { + let env = Env::default(); + let contract_id = env.register_contract(None, RewardsContract); + let client = RewardsContractClient::new(&env, &contract_id); + let admin = Address::generate(&env); + let user = Address::generate(&env); + client.initialize( + &admin, + &symbol_short!("Trivela"), + &symbol_short!("TVL"), + ); + + env.mock_all_auths(); + let result = client.try_claim(&user, &1); + assert!(result.is_err()); + assert_eq!(client.balance(&user), 0); +} + +#[test] +fn test_credit_overflow_errors() { + let env = Env::default(); + let contract_id = env.register_contract(None, RewardsContract); + let client = RewardsContractClient::new(&env, &contract_id); + let admin = Address::generate(&env); + let user = Address::generate(&env); + client.initialize( + &admin, + &symbol_short!("Trivela"), + &symbol_short!("TVL"), + ); + + env.mock_all_auths(); + client.credit(&admin, &user, &u64::MAX); + + let result = client.try_credit(&admin, &user, &1); + assert!(result.is_err()); + assert_eq!(client.balance(&user), u64::MAX); +} + +#[test] +fn test_uninitialized_access_returns_defaults() { + let env = Env::default(); + let contract_id = env.register_contract(None, RewardsContract); + let client = RewardsContractClient::new(&env, &contract_id); + let user = Address::generate(&env); + + assert_eq!(client.metadata(), (symbol_short!("Trivela"), symbol_short!("TVL"))); + assert_eq!(client.balance(&user), 0); + assert_eq!(client.total_claimed(), 0); +} From 35f893fc2a9df54b3958fc92e5b2014eff15b0b5 Mon Sep 17 00:00:00 2001 From: Dopey Date: Wed, 25 Mar 2026 19:58:45 +0100 Subject: [PATCH 2/2] test(rewards): cover contract edge cases --- contracts/campaign/src/test.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/contracts/campaign/src/test.rs b/contracts/campaign/src/test.rs index 2e1299ec..ade4787d 100644 --- a/contracts/campaign/src/test.rs +++ b/contracts/campaign/src/test.rs @@ -57,3 +57,17 @@ fn test_time_window_validation() { let result = client.try_register(&participant2); assert!(result.is_err()); } + +#[test] +fn test_register_participant_twice_returns_false() { + let env = Env::default(); + let contract_id = env.register_contract(None, CampaignContract); + let client = CampaignContractClient::new(&env, &contract_id); + let admin = Address::generate(&env); + let participant = Address::generate(&env); + client.initialize(&admin); + + env.mock_all_auths(); + assert!(client.register(&participant)); + assert!(!client.register(&participant)); +}