Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion contracts/src/admin_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ fn setup() -> (Env, NesteraContractClient<'static>, Address) {

env.mock_all_auths();
// Assuming initialize returns Result now
let _ = client.initialize(&admin, &admin_pk);
client.initialize(&admin, &admin_pk);

(env, client, admin)
}
Expand Down
2 changes: 1 addition & 1 deletion contracts/src/autosave.rs
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ pub fn get_user_autosaves(env: &Env, user: &Address) -> Vec<u64> {
.unwrap_or(Vec::new(env));

// Extend TTL on list access
if schedules.len() > 0 {
if !schedules.is_empty() {
ttl::extend_user_plan_list_ttl(env, &list_key);
}

Expand Down
14 changes: 7 additions & 7 deletions contracts/src/config_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ fn test_initialize_config_succeeds() {
assert_eq!(config.admin, admin);
assert_eq!(config.treasury, treasury);
assert_eq!(config.protocol_fee_bps, 100);
assert_eq!(config.paused, false);
assert!(!config.paused);
}

#[test]
Expand Down Expand Up @@ -127,7 +127,7 @@ fn test_get_config_before_config_init() {
let config = client.get_config();
assert_eq!(config.admin, admin);
assert_eq!(config.protocol_fee_bps, 0); // default
assert_eq!(config.paused, false); // default
assert!(!config.paused); // default
}

#[test]
Expand Down Expand Up @@ -270,7 +270,7 @@ fn test_pause_contract_succeeds() {
assert!(result.is_ok(), "admin should be able to pause");

let config = client.get_config();
assert_eq!(config.paused, true);
assert!(config.paused);
}

#[test]
Expand All @@ -283,7 +283,7 @@ fn test_unpause_contract_succeeds() {
assert!(result.is_ok(), "admin should be able to unpause");

let config = client.get_config();
assert_eq!(config.paused, false);
assert!(!config.paused);
}

#[test]
Expand Down Expand Up @@ -419,7 +419,7 @@ fn test_full_config_lifecycle() {
let config = client.get_config();
assert_eq!(config.treasury, treasury1);
assert_eq!(config.protocol_fee_bps, 250);
assert_eq!(config.paused, false);
assert!(!config.paused);

// 2. Update treasury
client.set_treasury(&admin, &treasury2);
Expand All @@ -433,13 +433,13 @@ fn test_full_config_lifecycle() {

// 4. Pause
client.pause_contract(&admin);
assert_eq!(client.get_config().paused, true);
assert!(client.get_config().paused);

// 5. Admin can still update config while paused
client.set_protocol_fee(&admin, &300);
assert_eq!(client.get_config().protocol_fee_bps, 300);

// 6. Unpause
client.unpause_contract(&admin);
assert_eq!(client.get_config().paused, false);
assert!(!client.get_config().paused);
}
58 changes: 37 additions & 21 deletions contracts/src/execution_tests.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#[cfg(test)]
mod execution_tests {
use crate::governance::{ProposalAction, VotingConfig};
use crate::governance::ProposalAction;
use crate::rewards::storage_types::RewardsConfig;
use crate::{NesteraContract, NesteraContractClient, PlanType};
use soroban_sdk::{
Expand Down Expand Up @@ -29,7 +29,7 @@ mod execution_tests {
max_daily_points: 1_000_000,
max_streak_multiplier: 10_000,
};
let _ = client.initialize_rewards_config(&config);
client.initialize_rewards_config(&config);

(env, client, admin)
}
Expand All @@ -38,10 +38,14 @@ mod execution_tests {
let (env, client, admin) = setup_contract();
env.mock_all_auths();

let _ = client.init_voting_config(&admin, &5000, &604800, &86400);
client.init_voting_config(&admin, &5000, &604800, &86400, &100, &10_000);

let creator = Address::generate(&env);
let description = String::from_str(&env, "Test proposal");

client.initialize_user(&creator);
let _ = client.create_savings_plan(&creator, &PlanType::Flexi, &1000); // Meets threshold

let action = ProposalAction::SetFlexiRate(500);
let proposal_id = client
.try_create_action_proposal(&creator, &description, &action)
Expand All @@ -59,8 +63,8 @@ mod execution_tests {
let _ = client.create_savings_plan(&voter2, &PlanType::Flexi, &2000);

// Vote for the proposal
let _ = client.vote(&proposal_id, &1, &voter1);
let _ = client.vote(&proposal_id, &1, &voter2);
client.vote(&proposal_id, &1, &voter1);
client.vote(&proposal_id, &1, &voter2);

(env, client, admin, proposal_id)
}
Expand Down Expand Up @@ -96,10 +100,14 @@ mod execution_tests {
let (env, client, admin) = setup_contract();
env.mock_all_auths();

let _ = client.init_voting_config(&admin, &5000, &604800, &86400);
client.init_voting_config(&admin, &5000, &604800, &86400, &100, &10_000);

let creator = Address::generate(&env);
let description = String::from_str(&env, "Test proposal");

client.initialize_user(&creator);
let _ = client.create_savings_plan(&creator, &PlanType::Flexi, &1000);

let action = ProposalAction::SetFlexiRate(500);
let proposal_id = client
.try_create_action_proposal(&creator, &description, &action)
Expand All @@ -110,7 +118,7 @@ mod execution_tests {
let voter = Address::generate(&env);
client.initialize_user(&voter);
let _ = client.create_savings_plan(&voter, &PlanType::Flexi, &1000);
let _ = client.vote(&proposal_id, &2, &voter);
client.vote(&proposal_id, &2, &voter);

// Advance time
env.ledger().with_mut(|li| {
Expand All @@ -131,7 +139,7 @@ mod execution_tests {
li.timestamp += 604800 + 1;
});

let _ = client.queue_proposal(&proposal_id);
client.queue_proposal(&proposal_id);

// Advance time past timelock
env.ledger().with_mut(|li| {
Expand All @@ -158,7 +166,7 @@ mod execution_tests {
li.timestamp += 604800 + 1;
});

let _ = client.queue_proposal(&proposal_id);
client.queue_proposal(&proposal_id);

// Try to execute before timelock
let result = client.try_execute_proposal(&proposal_id);
Expand Down Expand Up @@ -190,7 +198,7 @@ mod execution_tests {
li.timestamp += 604800 + 1;
});

let _ = client.queue_proposal(&proposal_id);
client.queue_proposal(&proposal_id);

let result = client.try_queue_proposal(&proposal_id);
assert!(result.is_err());
Expand All @@ -206,14 +214,14 @@ mod execution_tests {
li.timestamp += 604800 + 1;
});

let _ = client.queue_proposal(&proposal_id);
client.queue_proposal(&proposal_id);

// Advance time past timelock
env.ledger().with_mut(|li| {
li.timestamp += 86400 + 1;
});

let _ = client.execute_proposal(&proposal_id);
client.execute_proposal(&proposal_id);

let result = client.try_execute_proposal(&proposal_id);
assert!(result.is_err());
Expand All @@ -225,11 +233,15 @@ mod execution_tests {
env.mock_all_auths();

// Setup governance
let _ = client.init_voting_config(&admin, &5000, &604800, &86400);
client.init_voting_config(&admin, &5000, &604800, &86400, &100, &10_000);

// Create proposal
let creator = Address::generate(&env);
let description = String::from_str(&env, "Change flexi rate");

client.initialize_user(&creator);
let _ = client.create_savings_plan(&creator, &PlanType::Flexi, &1000);

let action = ProposalAction::SetFlexiRate(750);
let proposal_id = client
.try_create_action_proposal(&creator, &description, &action)
Expand All @@ -244,24 +256,24 @@ mod execution_tests {
let _ = client.create_savings_plan(&voter1, &PlanType::Flexi, &4000);
let _ = client.create_savings_plan(&voter2, &PlanType::Flexi, &3000);

let _ = client.vote(&proposal_id, &1, &voter1);
let _ = client.vote(&proposal_id, &1, &voter2);
client.vote(&proposal_id, &1, &voter1);
client.vote(&proposal_id, &1, &voter2);

// Wait for voting to end
env.ledger().with_mut(|li| {
li.timestamp += 604800 + 1;
});

// Queue
let _ = client.queue_proposal(&proposal_id);
client.queue_proposal(&proposal_id);

// Wait for timelock
env.ledger().with_mut(|li| {
li.timestamp += 86400 + 1;
});

// Execute
let _ = client.execute_proposal(&proposal_id);
client.execute_proposal(&proposal_id);

// Verify
assert_eq!(client.get_flexi_rate(), 750);
Expand All @@ -274,10 +286,14 @@ mod execution_tests {
let (env, client, admin) = setup_contract();
env.mock_all_auths();

let _ = client.init_voting_config(&admin, &5000, &604800, &86400);
client.init_voting_config(&admin, &5000, &604800, &86400, &100, &10_000);

let creator = Address::generate(&env);
let description = String::from_str(&env, "Pause contract");

client.initialize_user(&creator);
let _ = client.create_savings_plan(&creator, &PlanType::Flexi, &1000);

let action = ProposalAction::PauseContract;
let proposal_id = client
.try_create_action_proposal(&creator, &description, &action)
Expand All @@ -287,17 +303,17 @@ mod execution_tests {
let voter = Address::generate(&env);
client.initialize_user(&voter);
let _ = client.create_savings_plan(&voter, &PlanType::Flexi, &5000);
let _ = client.vote(&proposal_id, &1, &voter);
client.vote(&proposal_id, &1, &voter);

env.ledger().with_mut(|li| {
li.timestamp += 604800 + 1;
});
let _ = client.queue_proposal(&proposal_id);
client.queue_proposal(&proposal_id);

env.ledger().with_mut(|li| {
li.timestamp += 86400 + 1;
});
let _ = client.execute_proposal(&proposal_id);
client.execute_proposal(&proposal_id);

assert!(client.is_paused());
}
Expand Down
2 changes: 1 addition & 1 deletion contracts/src/goal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@ pub fn get_user_goal_saves(env: &Env, user: &Address) -> Vec<u64> {
.unwrap_or_else(|| Vec::new(env));

// Extend TTL on list access
if goals.len() > 0 {
if !goals.is_empty() {
ttl::extend_user_plan_list_ttl(env, &list_key);
}

Expand Down
Loading