Skip to content
Open
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
1 change: 0 additions & 1 deletion src/flow_test/flow_ideas.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
35 changes: 31 additions & 4 deletions src/flow_test/test.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -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);
}