Skip to content

Commit 15ddf08

Browse files
test: add update_rewards strk pool flow
1 parent a8d6962 commit 15ddf08

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

src/flow_test/flow_ideas.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
- Get staker info while staker has zero balance.
44

55
## `update_rewards`
6-
- staker with only strk pool.
76
- staker with only btc pool.
87
- staker with empty pool (STRK + BTC).
98
- staker with 2 btc pools with different decimals.

src/flow_test/test.cairo

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2756,3 +2756,47 @@ fn update_rewards_disable_rewards_flow_test() {
27562756
:result, expected_error: StakingError::REWARDS_ALREADY_UPDATED.describe(),
27572757
);
27582758
}
2759+
2760+
/// Flow:
2761+
/// Start consensus rewards.
2762+
/// Staker stake with STRK pool.
2763+
/// Delegator delegate STRK.
2764+
/// Advance K epochs.
2765+
/// update_rewards.
2766+
/// Test staker rewards.
2767+
/// Test delegator rewards.
2768+
/// Advance epoch.
2769+
/// Test delegator rewards.
2770+
#[test]
2771+
fn update_rewards_strk_pool_flow_test() {
2772+
let cfg: StakingInitConfig = Default::default();
2773+
let mut system = SystemConfigTrait::basic_stake_flow_cfg(:cfg).deploy();
2774+
system.start_consensus_rewards();
2775+
let stake_amount = system.staking.get_min_stake();
2776+
let delegation_amount = STRK_CONFIG.min_for_rewards;
2777+
let staker = system.new_staker(amount: stake_amount);
2778+
let commission = 200;
2779+
system.stake(:staker, amount: stake_amount, pool_enabled: true, :commission);
2780+
let pool = system.staking.get_pool(:staker);
2781+
let delegator = system.new_delegator(amount: delegation_amount);
2782+
system.delegate(:delegator, :pool, amount: delegation_amount);
2783+
system.advance_k_epochs();
2784+
2785+
system.update_rewards(:staker, disable_rewards: false);
2786+
let (expected_staker_rewards, expected_pool_rewards) =
2787+
calculate_staker_strk_rewards_with_balances_v3(
2788+
amount_own: stake_amount,
2789+
pool_amount: delegation_amount,
2790+
:commission,
2791+
staking_contract: system.staking.address,
2792+
minting_curve_contract: system.minting_curve.address,
2793+
);
2794+
let staker_rewards = system.staker_claim_rewards(:staker);
2795+
let delegator_rewards = system.delegator_claim_rewards(:delegator, :pool);
2796+
assert!(staker_rewards == expected_staker_rewards);
2797+
assert!(delegator_rewards == Zero::zero());
2798+
2799+
system.advance_epoch();
2800+
let delegator_rewards = system.delegator_claim_rewards(:delegator, :pool);
2801+
assert!(delegator_rewards == expected_pool_rewards);
2802+
}

src/flow_test/utils.cairo

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1518,6 +1518,12 @@ pub(crate) impl SystemStakerImpl of SystemStakerTrait {
15181518
.update_rewards(staker_address: staker.staker.address, :disable_rewards);
15191519
}
15201520

1521+
fn start_consensus_rewards(self: SystemState) {
1522+
let epoch_id = self.staking.get_current_epoch() + K.into();
1523+
self.set_consensus_rewards_first_epoch(:epoch_id);
1524+
self.advance_k_epochs();
1525+
}
1526+
15211527
#[feature("safe_dispatcher")]
15221528
fn safe_attest(self: SystemState, staker: Staker) -> Result<(), Array<felt252>> {
15231529
let block_hash = Zero::zero();

0 commit comments

Comments
 (0)