Skip to content

Commit e565455

Browse files
test: delegate_increase_delegate_flow_test (#85)
1 parent ca1738b commit e565455

File tree

2 files changed

+58
-1
lines changed

2 files changed

+58
-1
lines changed

src/flow_test/flow_ideas.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
- delegator claim rewards when last change is in epoch + 2, then advance epochs and claim again to see no missing rewards
2121
- same as above, also when there is change in epoch + 1
2222
- delegate, advance epoch and get rewards for the pool, claim - zero rewards for the delegate
23-
- delegate, advance epoch, delegate, advance epoch, claim rewards - only for the first delegation, advance epoch, claim rewards - for all
2423
- delegator claim after claim
2524
- delegator claim after claim when exists checkpoint with the current epoch of the first claim
2625
- member enter, in the same epoch or one epoch after claim (balance is zero).

src/flow_test/test.cairo

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3366,3 +3366,61 @@ fn staker_multiple_pools_multiple_delegators_flow_test() {
33663366
assert!(system.token.balance_of(account: strk_pool) < 10);
33673367
assert!(system.token.balance_of(account: btc_pool) < 10);
33683368
}
3369+
3370+
/// Flow:
3371+
/// Delegate
3372+
/// Advance epoch
3373+
/// Increase delegate
3374+
/// Advance epoch
3375+
/// Attest
3376+
/// Advance epoch
3377+
/// Claim rewards - only for the first delegation
3378+
/// Attest
3379+
/// Advance epoch
3380+
/// Claim rewards - for all
3381+
#[test]
3382+
fn delegate_increase_delegate_flow_test() {
3383+
let cfg: StakingInitConfig = Default::default();
3384+
let mut system = SystemConfigTrait::basic_stake_flow_cfg(:cfg).deploy();
3385+
let staking_contract = system.staking.address;
3386+
let minting_curve_contract = system.minting_curve.address;
3387+
let stake_amount = system.staking.get_min_stake();
3388+
let staker = system.new_staker(amount: stake_amount);
3389+
let commission = 200;
3390+
system.stake(:staker, amount: stake_amount, pool_enabled: true, :commission);
3391+
system.advance_k_epochs();
3392+
let pool = system.staking.get_pool(:staker);
3393+
let delegator = system.new_delegator(amount: 2 * stake_amount);
3394+
system.delegate(:delegator, :pool, amount: stake_amount);
3395+
system.advance_epoch();
3396+
system.increase_delegate(:delegator, :pool, amount: stake_amount);
3397+
system.advance_epoch();
3398+
system.advance_block_custom_and_attest(:staker, stake: 2 * stake_amount);
3399+
let (expected_staker_rewards, expected_pool_rewards) =
3400+
calculate_staker_strk_rewards_with_balances_v2(
3401+
amount_own: stake_amount,
3402+
pool_amount: stake_amount,
3403+
:commission,
3404+
:staking_contract,
3405+
:minting_curve_contract,
3406+
);
3407+
assert!(expected_staker_rewards.is_non_zero());
3408+
assert!(expected_pool_rewards.is_non_zero());
3409+
assert!(system.staker_claim_rewards(:staker) == expected_staker_rewards);
3410+
system.advance_epoch();
3411+
assert!(system.delegator_claim_rewards(:delegator, :pool) == expected_pool_rewards);
3412+
system.advance_block_custom_and_attest(:staker, stake: 3 * stake_amount);
3413+
let (expected_staker_rewards, expected_pool_rewards) =
3414+
calculate_staker_strk_rewards_with_balances_v2(
3415+
amount_own: stake_amount,
3416+
pool_amount: 2 * stake_amount,
3417+
:commission,
3418+
:staking_contract,
3419+
:minting_curve_contract,
3420+
);
3421+
assert!(expected_staker_rewards.is_non_zero());
3422+
assert!(expected_pool_rewards.is_non_zero());
3423+
assert!(system.staker_claim_rewards(:staker) == expected_staker_rewards);
3424+
system.advance_epoch();
3425+
assert!(system.delegator_claim_rewards(:delegator, :pool) == expected_pool_rewards);
3426+
}

0 commit comments

Comments
 (0)