Skip to content

Commit c62bd2b

Browse files
committed
test: find sigma - cover all branches with member from V0
1 parent 8beff79 commit c62bd2b

File tree

3 files changed

+116
-1
lines changed

3 files changed

+116
-1
lines changed

src/flow_test/flow_ideas.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
- find sigma: Enter V0, change in V1, catch all ifs.
3535
- find sigma: Enter V0, change in V2, catch all ifs.
3636
- find sigma_edge_cases: catch the comments.
37-
- find sigma - cover all branches with member from V0, V1, V2(V2 DONE).
3837
more ideas:
3938
- member from V1, pool gets rewards at V1, update balance at V1, update balance at V3, pool gets rewards at V3, test rewards.
4039
- member from V1, pool gets rewards at V1, pool gets rewards at V3, update balance at V3, test rewards.

src/flow_test/flows.cairo

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6620,6 +6620,101 @@ pub(crate) impl FindSigmaMigrationIdxIsOneFlowImpl of MultiVersionFlowTrait<
66206620
}
66216621
}
66226622

6623+
/// Flow:
6624+
/// Delegator from V0
6625+
/// Test claim rewards with no rewards
6626+
#[derive(Drop, Copy)]
6627+
pub(crate) struct DelegatorV0FindSigmaZeroFlow {
6628+
pub(crate) pool: Option<ContractAddress>,
6629+
pub(crate) delegator: Option<Delegator>,
6630+
}
6631+
pub(crate) impl DelegatorV0FindSigmaZeroFlowImpl of FlowTrait<DelegatorV0FindSigmaZeroFlow> {
6632+
fn setup(ref self: DelegatorV0FindSigmaZeroFlow, ref system: SystemState) {
6633+
let amount = system.staking.get_min_stake();
6634+
let staker = system.new_staker(:amount);
6635+
let commission = 200;
6636+
system.stake(:staker, :amount, pool_enabled: true, :commission);
6637+
let pool = system.staking.get_pool(:staker);
6638+
let delegator = system.new_delegator(amount: amount);
6639+
system.delegate(:delegator, :pool, amount: amount);
6640+
self.delegator = Option::Some(delegator);
6641+
self.pool = Option::Some(pool);
6642+
system.set_pool_for_upgrade(pool_address: pool);
6643+
system.set_staker_for_migration(staker_address: staker.staker.address);
6644+
}
6645+
fn test(self: DelegatorV0FindSigmaZeroFlow, ref system: SystemState) {
6646+
let pool = self.pool.unwrap();
6647+
let delegator = self.delegator.unwrap();
6648+
let unclaimed_rewards = system.delegator_unclaimed_rewards(:delegator, :pool);
6649+
assert!(unclaimed_rewards.is_zero());
6650+
system.advance_epoch();
6651+
let unclaimed_rewards = system.delegator_unclaimed_rewards(:delegator, :pool);
6652+
assert!(unclaimed_rewards.is_zero());
6653+
system.advance_epoch();
6654+
let unclaimed_rewards = system.delegator_unclaimed_rewards(:delegator, :pool);
6655+
assert!(unclaimed_rewards.is_zero());
6656+
let rewards = system.delegator_claim_rewards(:delegator, :pool);
6657+
assert!(rewards.is_zero());
6658+
}
6659+
}
6660+
6661+
/// Flow:
6662+
/// Delegator from V0
6663+
/// Gets rewards in V0
6664+
/// Gets rewards in V3
6665+
/// Test delegator rewards - cover find sigma cases.
6666+
#[derive(Drop, Copy)]
6667+
pub(crate) struct DelegatorRewardsV0FindSigmaFlow {
6668+
pub(crate) staker: Option<Staker>,
6669+
pub(crate) pool: Option<ContractAddress>,
6670+
pub(crate) delegator: Option<Delegator>,
6671+
pub(crate) expected_rewards: Option<Amount>,
6672+
}
6673+
pub(crate) impl DelegatorRewardsV0FindSigmaFlowImpl of FlowTrait<DelegatorRewardsV0FindSigmaFlow> {
6674+
fn setup(ref self: DelegatorRewardsV0FindSigmaFlow, ref system: SystemState) {
6675+
let amount = system.staking.get_min_stake();
6676+
let staker = system.new_staker(:amount);
6677+
let commission = 200;
6678+
system.stake(:staker, :amount, pool_enabled: true, :commission);
6679+
let pool = system.staking.get_pool(:staker);
6680+
let delegator = system.new_delegator(amount: amount);
6681+
system.delegate(:delegator, :pool, amount: amount);
6682+
self.staker = Option::Some(staker);
6683+
self.delegator = Option::Some(delegator);
6684+
self.pool = Option::Some(pool);
6685+
system.set_pool_for_upgrade(pool_address: pool);
6686+
system.set_staker_for_migration(staker_address: staker.staker.address);
6687+
let one_week = Time::weeks(count: 1);
6688+
system.advance_time(time: one_week);
6689+
system.staking.update_global_index_if_needed();
6690+
self.expected_rewards = Option::Some(system.delegator_unclaimed_rewards(:delegator, :pool));
6691+
}
6692+
fn test(self: DelegatorRewardsV0FindSigmaFlow, ref system: SystemState) {
6693+
let staker = self.staker.unwrap();
6694+
let pool = self.pool.unwrap();
6695+
let delegator = self.delegator.unwrap();
6696+
let expected_rewards_v0 = self.expected_rewards.unwrap();
6697+
let unclaimed_rewards = system.delegator_unclaimed_rewards(:delegator, :pool);
6698+
assert_eq!(unclaimed_rewards, expected_rewards_v0);
6699+
system.advance_k_epochs_and_attest(:staker);
6700+
let expected_rewards = calculate_strk_pool_rewards_v2(
6701+
staker_address: staker.staker.address,
6702+
staking_contract: system.staking.address,
6703+
minting_curve_contract: system.minting_curve.address,
6704+
);
6705+
let unclaimed_rewards = system.delegator_unclaimed_rewards(:delegator, :pool);
6706+
assert_eq!(unclaimed_rewards, expected_rewards_v0);
6707+
system.advance_epoch();
6708+
let unclaimed_rewards = system.delegator_unclaimed_rewards(:delegator, :pool);
6709+
assert_eq!(unclaimed_rewards, expected_rewards_v0 + expected_rewards);
6710+
system.advance_k_epochs_and_attest(:staker);
6711+
let unclaimed_rewards = system.delegator_unclaimed_rewards(:delegator, :pool);
6712+
assert_eq!(unclaimed_rewards, expected_rewards_v0 + expected_rewards);
6713+
system.advance_epoch();
6714+
let unclaimed_rewards = system.delegator_unclaimed_rewards(:delegator, :pool);
6715+
assert_eq!(unclaimed_rewards, expected_rewards_v0 + 2 * expected_rewards);
6716+
}
6717+
}
66236718

66246719
// TODO: Implement this flow test.
66256720
// Stake

src/flow_test/fork_test.cairo

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,3 +545,24 @@ fn delegator_change_balance_before_upgrade_rewards_consensus_flow_test() {
545545
};
546546
test_flow_mainnet(ref :flow);
547547
}
548+
549+
#[test]
550+
#[fork("MAINNET_LATEST")]
551+
fn delegator_v0_find_sigma_zero_flow_test() {
552+
let mut flow = flows::DelegatorV0FindSigmaZeroFlow {
553+
pool: Option::None, delegator: Option::None,
554+
};
555+
test_flow_mainnet(ref :flow);
556+
}
557+
558+
#[test]
559+
#[fork("MAINNET_LATEST")]
560+
fn delegator_rewards_v0_find_sigma_flow_test() {
561+
let mut flow = flows::DelegatorRewardsV0FindSigmaFlow {
562+
staker: Option::None,
563+
pool: Option::None,
564+
delegator: Option::None,
565+
expected_rewards: Option::None,
566+
};
567+
test_flow_mainnet(ref :flow);
568+
}

0 commit comments

Comments
 (0)