Skip to content

Commit

Permalink
Showing 1 changed file with 111 additions and 0 deletions.
111 changes: 111 additions & 0 deletions farm-staking/farm-staking/tests/farm_staking_energy_test.rs
Original file line number Diff line number Diff line change
@@ -245,3 +245,114 @@ fn farm_staking_claim_boosted_rewards_for_user_test() {
);
fs_setup.check_farm_token_supply(farm_in_amount);
}

#[test]
fn farm_staking_full_position_boosted_rewards_test() {
DebugApi::dummy();
let mut fs_setup =
FarmStakingSetup::new(farm_staking::contract_obj, energy_factory::contract_obj);

fs_setup.set_boosted_yields_factors();
fs_setup.set_boosted_yields_rewards_percentage(BOOSTED_YIELDS_PERCENTAGE);

fs_setup.set_user_energy(&fs_setup.user_address.clone(), 10_000, 0, 10);

let farm_in_amount = 50_000_000;
fs_setup.stake_farm(farm_in_amount, &[], 1, 0, 0);
fs_setup.stake_farm(farm_in_amount, &[], 2, 0, 0);
fs_setup.check_farm_token_supply(farm_in_amount * 2);

// claim to get energy registered
fs_setup
.b_mock
.execute_esdt_transfer(
&fs_setup.user_address,
&fs_setup.farm_wrapper,
FARM_TOKEN_ID,
1,
&rust_biguint!(farm_in_amount),
|sc| {
let _ = sc.claim_rewards(OptionalValue::None);
},
)
.assert_ok();

fs_setup.set_block_nonce(10);

// random user tx to collect rewards

let rand_user = fs_setup.b_mock.create_user_account(&rust_biguint!(0));
fs_setup.b_mock.set_esdt_balance(
&rand_user,
FARMING_TOKEN_ID,
&rust_biguint!(USER_TOTAL_RIDE_TOKENS),
);

fs_setup.set_user_energy(&rand_user, 1, 5, 1);
fs_setup.set_block_epoch(5);

fs_setup
.b_mock
.execute_esdt_transfer(
&rand_user,
&fs_setup.farm_wrapper,
FARMING_TOKEN_ID,
0,
&rust_biguint!(10),
|sc| {
let _ = sc.stake_farm_endpoint(OptionalValue::None);
},
)
.assert_ok();

fs_setup
.b_mock
.execute_esdt_transfer(
&rand_user,
&fs_setup.farm_wrapper,
FARM_TOKEN_ID,
4,
&rust_biguint!(10),
|sc| {
let _ = sc.unstake_farm(OptionalValue::None);
},
)
.assert_ok();

fs_setup.set_block_epoch(8);

fs_setup.set_user_energy(&fs_setup.user_address.clone(), 10_000, 8, 10);

let expected_base_rewards = 15;
let expected_boosted_rewards = 10;
let mut expected_farming_token_balance = rust_biguint!(
USER_TOTAL_RIDE_TOKENS - (farm_in_amount * 2)
+ expected_base_rewards
+ expected_boosted_rewards
);
let expected_reward_per_share = 300_000; // from 400_000 -> 300_000

// Should receive half base rewards and full boosted rewards
fs_setup.claim_rewards(
farm_in_amount,
2,
expected_base_rewards + expected_boosted_rewards,
&expected_farming_token_balance,
&expected_farming_token_balance,
6,
expected_reward_per_share,
);

// Should receive half base rewards and no boosted rewards
expected_farming_token_balance += expected_base_rewards;
fs_setup.claim_rewards(
farm_in_amount,
3,
expected_base_rewards,
&expected_farming_token_balance,
&expected_farming_token_balance,
7,
expected_reward_per_share,
);
fs_setup.check_farm_token_supply(farm_in_amount * 2);
}

0 comments on commit 4262fa1

Please sign in to comment.