From e4e5171fe0ed57bbba3b3487661ab87e6ba209f3 Mon Sep 17 00:00:00 2001 From: Arad Reder Date: Thu, 27 Nov 2025 14:34:25 +0200 Subject: [PATCH] test: add update_rewards same epoch flow --- src/flow_test/flow_ideas.md | 1 - src/flow_test/test.cairo | 35 +++++++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/flow_test/flow_ideas.md b/src/flow_test/flow_ideas.md index 68f3ae13..2745c5f6 100644 --- a/src/flow_test/flow_ideas.md +++ b/src/flow_test/flow_ideas.md @@ -5,7 +5,6 @@ - member change balance and test with view of current epoch balance ## `update_rewards` -- update rewards for 2 different blocks in the same epoch - should be same rewards. - Change epoch len in blocks - rewards should be changed. - disable_rewards = true, advance block, disable_rewards = false, advance block, disable_rewards = true, test rewards. - update rewards for some different blocks in the same epoch, test rewards of pool member. diff --git a/src/flow_test/test.cairo b/src/flow_test/test.cairo index 30c1ee3d..14ef150c 100644 --- a/src/flow_test/test.cairo +++ b/src/flow_test/test.cairo @@ -3721,10 +3721,7 @@ fn update_rewards_staker_intent_flow_test() { system.update_rewards(:staker, disable_rewards: false); let staker_rewards = system.staker_claim_rewards(:staker); let (expected_rewards, _) = calculate_staker_strk_rewards_with_balances_v3( - amount_own: stake_amount, - pool_amount: Zero::zero(), - :commission, - :minting_curve_contract, + amount_own: stake_amount, pool_amount: Zero::zero(), :commission, :minting_curve_contract, ); assert!(staker_rewards == expected_rewards); @@ -3737,3 +3734,33 @@ fn update_rewards_staker_intent_flow_test() { let result = system.safe_update_rewards(:staker, disable_rewards: false); assert_panic_with_error(:result, expected_error: StakingError::INVALID_STAKER.describe()); } + +/// Flow: +/// Staker stake. +/// Start consensus rewards. +/// update_rewards - test rewards. +/// Advance block. +/// update_rewards - test rewards are the same. +#[test] +fn update_rewards_same_epoch_flow_test() { + let cfg: StakingInitConfig = Default::default(); + let mut system = SystemConfigTrait::basic_stake_flow_cfg(:cfg).deploy(); + let minting_curve_contract = system.minting_curve.address; + let stake_amount = system.staking.get_min_stake(); + let staker = system.new_staker(amount: stake_amount); + let commission = 200; + system.stake(:staker, amount: stake_amount, pool_enabled: false, :commission); + system.start_consensus_rewards(); + + system.update_rewards(:staker, disable_rewards: false); + let staker_rewards = system.staker_claim_rewards(:staker); + let (expected_rewards, _) = calculate_staker_strk_rewards_with_balances_v3( + amount_own: stake_amount, pool_amount: Zero::zero(), :commission, :minting_curve_contract, + ); + assert!(staker_rewards == expected_rewards); + + advance_blocks(blocks: 1, block_duration: AVG_BLOCK_DURATION); + system.update_rewards(:staker, disable_rewards: false); + let staker_rewards = system.staker_claim_rewards(:staker); + assert!(staker_rewards == expected_rewards); +}