From f1d8399089a2991a133e5be2743ac33c781bb7ba Mon Sep 17 00:00:00 2001 From: munlite Date: Mon, 1 Apr 2024 15:29:26 +0300 Subject: [PATCH] feat: add tests for lockup period --- sources/stake.move | 4 +- tests/emergency_tests.move | 77 ++++++++++------ tests/scripts_tests.move | 50 ++++++++--- tests/stake_decimals_tests.move | 52 +++++------ tests/stake_nft_boost_tests.move | 62 ++++++------- tests/stake_tests.move | 150 ++++++++++++++++--------------- tests/staking_epochs_tests.move | 14 +-- tests/whitelist_tests.move | 18 ++-- 8 files changed, 243 insertions(+), 184 deletions(-) diff --git a/sources/stake.move b/sources/stake.move index 91141ae..a50c165 100644 --- a/sources/stake.move +++ b/sources/stake.move @@ -1266,12 +1266,12 @@ module harvest::stake { #[test_only] /// Access staking pool fields with no getters. - public fun get_pool_info(pool_addr: address): (u64, u128, u64, u64, u128) acquires StakePool { + public fun get_pool_info(pool_addr: address): (u64, u128, u64, u64, u128, u64) acquires StakePool { let pool = borrow_global>(pool_addr); let epoch = vector::borrow(&pool.epochs, get_pool_current_epoch_inner(pool)); (epoch.reward_per_sec, epoch.accum_reward, epoch.last_update_time, - coin::value(&pool.reward_coins), pool.scale) + coin::value(&pool.reward_coins), pool.scale, pool.lockup_period) } #[test_only] diff --git a/tests/emergency_tests.move b/tests/emergency_tests.move index e5ca886..b5ac3d3 100644 --- a/tests/emergency_tests.move +++ b/tests/emergency_tests.move @@ -74,8 +74,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); } #[test] @@ -88,8 +89,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake::enable_emergency(&emergency_admin, @harvest); @@ -108,8 +110,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); let coins = coin::withdraw(&alice_acc, 1 * ONE_COIN); @@ -129,8 +132,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake::enable_emergency(&emergency_admin, @harvest); @@ -148,8 +152,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; + let lockup_period = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); let coins = coin::withdraw(&alice_acc, 1 * ONE_COIN); @@ -177,13 +182,14 @@ module harvest::emergency_tests { // register staking pool with rewards and boost config let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; + let lockup_period = 15768000; let boost_config = stake::create_boost_config( @collection_owner, collection_name, 5 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, lockup_period, option::some(boost_config), vector[]); let coins = coin::withdraw(&alice_acc, 1 * ONE_COIN); @@ -208,13 +214,14 @@ module harvest::emergency_tests { // register staking pool with rewards and boost config let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; + let lockup_period = 15768000; let boost_config = stake::create_boost_config( @collection_owner, collection_name, 5 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, lockup_period, option::some(boost_config), vector[]); let coins = coin::withdraw(&alice_acc, 1 * ONE_COIN); @@ -240,8 +247,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake_config::enable_global_emergency(&emergency_admin); @@ -260,8 +268,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); let coins = coin::withdraw(&alice_acc, 1 * ONE_COIN); @@ -281,8 +290,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period ,option::none(), vector[]); stake_config::enable_global_emergency(&emergency_admin); @@ -300,8 +310,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); let coins = coin::withdraw(&alice_acc, 1 * ONE_COIN); @@ -329,13 +340,14 @@ module harvest::emergency_tests { // register staking pool with rewards and boost config let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; + let lockup_period = 15768000; let boost_config = stake::create_boost_config( @collection_owner, collection_name, 5 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, lockup_period, option::some(boost_config), vector[]); let coins = coin::withdraw(&alice_acc, 1 * ONE_COIN); @@ -360,13 +372,14 @@ module harvest::emergency_tests { // register staking pool with rewards and boost config let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; + let lockup_period = 15768000; let boost_config = stake::create_boost_config( @collection_owner, collection_name, 5 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, lockup_period, option::some(boost_config), vector[]); let coins = coin::withdraw(&alice_acc, 1 * ONE_COIN); @@ -390,8 +403,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake_config::enable_global_emergency(&emergency_admin); @@ -408,8 +422,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake::enable_emergency(&alice_acc, @harvest); } @@ -422,8 +437,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake::enable_emergency(&emergency_admin, @harvest); stake::enable_emergency(&emergency_admin, @harvest); @@ -438,8 +454,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); let coins = coin::withdraw(&alice_acc, 1 * ONE_COIN); @@ -470,13 +487,14 @@ module harvest::emergency_tests { // register staking pool with rewards and boost config let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; + let lockup_period = 15768000; let boost_config = stake::create_boost_config( @collection_owner, collection_name, 5 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, lockup_period, option::some(boost_config), vector[]); let coins = coin::withdraw(&alice_acc, 1 * ONE_COIN); @@ -506,8 +524,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); let coins = coin::withdraw(&alice_acc, 1 * ONE_COIN); @@ -528,10 +547,11 @@ module harvest::emergency_tests { let reward_coins_1 = mint_default_coin(12345 * ONE_COIN); let reward_coins_2 = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins_1, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake::register_pool(&harvest, reward_coins_2, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake::enable_emergency(&emergency_admin, @harvest); @@ -549,8 +569,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake_config::enable_global_emergency(&emergency_admin); stake_config::enable_global_emergency(&emergency_admin); @@ -565,8 +586,9 @@ module harvest::emergency_tests { // register staking pool let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); let coins = coin::withdraw(&alice_acc, 1 * ONE_COIN); @@ -598,13 +620,14 @@ module harvest::emergency_tests { // register staking pool with rewards and boost config let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; + let lockup_period = 15768000; let boost_config = stake::create_boost_config( @collection_owner, collection_name, 5 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, lockup_period, option::some(boost_config), vector[]); let coins = coin::withdraw(&alice_acc, 1 * ONE_COIN); @@ -649,8 +672,9 @@ module harvest::emergency_tests { let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&alice, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake::enable_emergency(&alice, @alice); @@ -679,8 +703,9 @@ module harvest::emergency_tests { let reward_coins = mint_default_coin(12345 * ONE_COIN); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&alice, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake_config::enable_global_emergency(&alice); diff --git a/tests/scripts_tests.move b/tests/scripts_tests.move index e70d9c2..183ba6a 100644 --- a/tests/scripts_tests.move +++ b/tests/scripts_tests.move @@ -30,11 +30,11 @@ module harvest::scripts_tests { coin::deposit(@harvest, reward_coins); assert!(coin::balance(@harvest) == 1000000000, 1); scripts::register_pool(&harvest, 1000 * ONE_COIN, - duration, vector[]); + duration, WEEK_IN_SECONDS, vector[]); assert!(coin::balance(@harvest) == 0, 1); - let (reward_per_sec, accum_reward, last_updated, reward_coin_amount, scale) = + let (reward_per_sec, accum_reward, last_updated, reward_coin_amount, scale, lockup_period) = stake::get_pool_info(@harvest); let end_ts = stake::get_end_timestamp(@harvest); assert!(end_ts == START_TIME + duration, 1); @@ -43,6 +43,7 @@ module harvest::scripts_tests { assert!(last_updated == 682981200, 1); assert!(reward_coin_amount == 1000 * ONE_COIN, 1); assert!(scale == 1000000000000, 1); + assert!(lockup_period == WEEK_IN_SECONDS, 1); assert!(stake::pool_exists(@harvest), 1); } @@ -57,11 +58,11 @@ module harvest::scripts_tests { coin::deposit(@harvest, reward_coins); assert!(coin::balance(@harvest) == 1000000000, 1); scripts::register_pool(&harvest, 1000 * ONE_COIN, - duration, vector[@alice, @bob, @0x41]); + duration, 0, vector[@alice, @bob, @0x41]); assert!(coin::balance(@harvest) == 0, 1); - let (reward_per_sec, accum_reward, last_updated, reward_coin_amount, scale) = + let (reward_per_sec, accum_reward, last_updated, reward_coin_amount, scale, lockup_period) = stake::get_pool_info(@harvest); let end_ts = stake::get_end_timestamp(@harvest); assert!(end_ts == START_TIME + duration, 1); @@ -70,6 +71,7 @@ module harvest::scripts_tests { assert!(last_updated == 682981200, 1); assert!(reward_coin_amount == 1000 * ONE_COIN, 1); assert!(scale == 1000000000000, 1); + assert!(lockup_period == 0, 1); assert!(stake::pool_exists(@harvest), 1); // check whitelist @@ -91,12 +93,14 @@ module harvest::scripts_tests { let reward_coins = mint_default_coin(1000 * ONE_COIN); let duration = 100000000; + let lockup_period = 100000000; coin::deposit(@harvest, reward_coins); assert!(coin::balance(@harvest) == 1000000000, 1); scripts::register_pool_with_collection( &harvest, 1000 * ONE_COIN, duration, + lockup_period, @collection_owner, collection_name, 10, @@ -105,7 +109,7 @@ module harvest::scripts_tests { assert!(coin::balance(@harvest) == 0, 1); - let (reward_per_sec, accum_reward, last_updated, reward_coin_amount, scale) = + let (reward_per_sec, accum_reward, last_updated, reward_coin_amount, scale, pool_lockup_period) = stake::get_pool_info(@harvest); let end_ts = stake::get_end_timestamp(@harvest); assert!(end_ts == START_TIME + duration, 1); @@ -114,6 +118,7 @@ module harvest::scripts_tests { assert!(last_updated == 682981200, 1); assert!(reward_coin_amount == 1000 * ONE_COIN, 1); assert!(scale == 1000000000000, 1); + assert!(pool_lockup_period == lockup_period, 1); assert!(stake::pool_exists(@harvest), 1); let (collection_owner_addr, coll_name, boost_percent) = @@ -134,12 +139,14 @@ module harvest::scripts_tests { let reward_coins = mint_default_coin(1000 * ONE_COIN); let duration = 100000000; + let lockup_period = 100000000; coin::deposit(@harvest, reward_coins); assert!(coin::balance(@harvest) == 1000000000, 1); scripts::register_pool_with_collection( &harvest, 1000 * ONE_COIN, duration, + lockup_period, @collection_owner, collection_name, 10, @@ -148,7 +155,7 @@ module harvest::scripts_tests { assert!(coin::balance(@harvest) == 0, 1); - let (reward_per_sec, accum_reward, last_updated, reward_coin_amount, scale) = + let (reward_per_sec, accum_reward, last_updated, reward_coin_amount, scale, pool_lockup_period) = stake::get_pool_info(@harvest); let end_ts = stake::get_end_timestamp(@harvest); assert!(end_ts == START_TIME + duration, 1); @@ -157,6 +164,7 @@ module harvest::scripts_tests { assert!(last_updated == 682981200, 1); assert!(reward_coin_amount == 1000 * ONE_COIN, 1); assert!(scale == 1000000000000, 1); + assert!(pool_lockup_period == lockup_period, 1); assert!(stake::pool_exists(@harvest), 1); let (collection_owner_addr, coll_name, boost_percent) = @@ -187,11 +195,11 @@ module harvest::scripts_tests { assert!(coin::balance(@harvest) == 1000000000, 1); scripts::register_pool(&harvest, 1000 * ONE_COIN, - duration, vector[]); + duration, WEEK_IN_SECONDS, vector[]); assert!(coin::balance(@harvest) == 0, 1); - let (reward_per_sec, accum_reward, last_updated, reward_coin_amount, scale) = + let (reward_per_sec, accum_reward, last_updated, reward_coin_amount, scale, lockup_period) = stake::get_pool_info(pool_address); let end_ts = stake::get_end_timestamp(@harvest); assert!(end_ts == START_TIME + duration, 1); @@ -200,6 +208,7 @@ module harvest::scripts_tests { assert!(last_updated == 682981200, 1); assert!(reward_coin_amount == 1000 * ONE_COIN, 1); assert!(scale == 1000000000000, 1); + assert!(lockup_period == WEEK_IN_SECONDS, 1); let alice_acc = new_account_with_stake_coins(@alice, 100 * ONE_COIN); @@ -249,6 +258,7 @@ module harvest::scripts_tests { &harvest, 15768000000000, 15768000, + 0, vector[], ); @@ -283,6 +293,7 @@ module harvest::scripts_tests { &harvest, 15768000000000, 15768000, + WEEK_IN_SECONDS, vector[], ); @@ -326,6 +337,7 @@ module harvest::scripts_tests { &harvest, 15768000000000, 15768000, + 0, vector[], ); @@ -362,6 +374,7 @@ module harvest::scripts_tests { &harvest, 15768000000000, 15768000, + 0, vector[], ); @@ -403,6 +416,7 @@ module harvest::scripts_tests { &harvest, 15768000000000, 15768000, + 0, @collection_owner, collection_name, 5, @@ -452,6 +466,7 @@ module harvest::scripts_tests { &harvest, 15768000000000, 15768000, + WEEK_IN_SECONDS, @collection_owner, collection_name, 5, @@ -510,6 +525,7 @@ module harvest::scripts_tests { &harvest, 15768000000000, 15768000, + 0, @collection_owner, collection_name, 5, @@ -554,6 +570,7 @@ module harvest::scripts_tests { &harvest, 15768000000000, 15768000, + 0, @collection_owner, collection_name, 5, @@ -588,16 +605,17 @@ module harvest::scripts_tests { let reward_coins = mint_default_coin(1000 * ONE_COIN); let duration = 100000000; + let lockup_period = 100000000; coin::deposit(@harvest, reward_coins); scripts::register_pool(&harvest, 1000 * ONE_COIN, - duration, vector[]); + duration, lockup_period, vector[]); let reward_coins = mint_default_coin(1 * ONE_COIN); coin::deposit(@alice, reward_coins); assert!(coin::balance(@alice) == 1000000, 1); scripts::deposit_reward_coins(&alice_acc, @harvest, 1 * ONE_COIN, 1); - let (_, _, _, reward_coin_amount, _) = stake::get_pool_info(@harvest); + let (_, _, _, reward_coin_amount, _, _) = stake::get_pool_info(@harvest); assert!(reward_coin_amount == 1001000000, 1); assert!(coin::balance(@alice) == 0, 1); } @@ -613,10 +631,12 @@ module harvest::scripts_tests { // register staking pool with rewards and boost config let duration = 15768000; + let lockup_period = 15768000; scripts::register_pool( &harvest, 15768000000000, 15768000, + lockup_period, vector[@bob], ); @@ -660,7 +680,7 @@ module harvest::scripts_tests { // register staking pool with rewards scripts::register_pool(&harvest, 15768000000000, - 15768000, vector[]); + 15768000, 0, vector[]); scripts::enable_emergency(&emergency_admin, @harvest); @@ -678,7 +698,7 @@ module harvest::scripts_tests { // register staking pool with rewards scripts::register_pool(&harvest, 15768000000000, - 15768000, vector[]); + 15768000, 0, vector[]); scripts::stake(&alice_acc, @harvest, 10 * ONE_COIN); scripts::enable_emergency(&emergency_admin, @harvest); @@ -708,6 +728,7 @@ module harvest::scripts_tests { &harvest, 15768000000000, 15768000, + 0, @collection_owner, collection_name, 5, @@ -740,9 +761,10 @@ module harvest::scripts_tests { let reward_coins = mint_default_coin(1000 * ONE_COIN); let duration = 100000000; + let lockup_period = 100000000; coin::deposit(@harvest, reward_coins); scripts::register_pool(&harvest, 1000 * ONE_COIN, - duration, vector[]); + duration, lockup_period, vector[]); timestamp::update_global_time_for_test_secs(START_TIME + duration + 7257600); @@ -761,7 +783,7 @@ module harvest::scripts_tests { let duration = 100000000; coin::deposit(@harvest, reward_coins); scripts::register_pool(&harvest, 1000 * ONE_COIN, - duration, vector[]); + duration, 0, vector[]); timestamp::update_global_time_for_test_secs(START_TIME + duration + 7257600); diff --git a/tests/stake_decimals_tests.move b/tests/stake_decimals_tests.move index 2f4a5c7..4205dfa 100644 --- a/tests/stake_decimals_tests.move +++ b/tests/stake_decimals_tests.move @@ -45,7 +45,7 @@ module harvest::stake_decimals_tests { let reward_coins = mint_default_coin(10000000); let duration = 2000000; stake::register_pool(&harvest_acc, reward_coins, - duration, option::none(), vector[]); + duration, WEEK_IN_SECONDS, option::none(), vector[]); // stake 19 StakeCoins from alice let coins = @@ -53,7 +53,7 @@ module harvest::stake_decimals_tests { stake::stake(&alice_acc, @harvest, coins); // check pool parameters after first stake - let (reward_per_sec, accum_reward, last_updated, _, _) = + let (reward_per_sec, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // pool_rewards_amount / duration // 5 RewardCoins @@ -74,7 +74,7 @@ module harvest::stake_decimals_tests { stake::recalculate_user_stake(@harvest, @alice); // check pool parameters after 10 seconds - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + accum_reward(previous) // 2.631578947368 RewardCoins @@ -124,7 +124,7 @@ module harvest::stake_decimals_tests { // check pool parameters // note: accum_reward recalculated before total_stake was decreased by user unstake - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + accum_reward(previous) // 104278.493647912885 RewardCoins @@ -152,7 +152,7 @@ module harvest::stake_decimals_tests { // check pool parameters after full unstake // note: accum_reward recalculated before total_stake was decreased by user unstake - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + accum_reward(previous) // 104284.049203468440 RewardCoins @@ -223,7 +223,7 @@ module harvest::stake_decimals_tests { let reward_coins = mint_default_coin(1000000000000000); let duration = 5000000; stake::register_pool(&harvest_acc, reward_coins, - duration, option::none(), vector[]); + duration, WEEK_IN_SECONDS, option::none(), vector[]); // stake 19.99 StakeCoins from alice let coins = @@ -231,7 +231,7 @@ module harvest::stake_decimals_tests { stake::stake(&alice_acc, @harvest, coins); // check pool parameters after first stake - let (reward_per_sec, accum_reward, last_updated, _, _) = + let (reward_per_sec, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // pool_rewards_amount / duration // 2 RewardCoins @@ -252,7 +252,7 @@ module harvest::stake_decimals_tests { stake::recalculate_user_stake(@harvest, @alice); // check pool parameters after 10 seconds - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + accum_reward(previous) // 1.000500250125 RewardCoins @@ -302,7 +302,7 @@ module harvest::stake_decimals_tests { // check pool parameters // note: accum_reward recalculated before total_stake was decreased by user unstake - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + accum_reward(previous) // 40334.444981743956 RewardCoins @@ -330,7 +330,7 @@ module harvest::stake_decimals_tests { // check pool parameters after full unstake // note: accum_reward recalculated before total_stake was decreased by user unstake - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + accum_reward(previous) // 40336.446983745958 RewardCoins @@ -401,7 +401,7 @@ module harvest::stake_decimals_tests { let reward_coins = mint_default_coin(10000000000000000); let duration = 1000000; stake::register_pool(&harvest_acc, reward_coins, - duration, option::none(), vector[]); + duration, WEEK_IN_SECONDS, option::none(), vector[]); // stake 19.999999 StakeCoins from alice let coins = @@ -409,7 +409,7 @@ module harvest::stake_decimals_tests { stake::stake(&alice_acc, @harvest, coins); // check pool parameters after first stake - let (reward_per_sec, accum_reward, last_updated, _, _) = + let (reward_per_sec, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // pool_rewards_amount / duration // 1 RewardCoin @@ -430,7 +430,7 @@ module harvest::stake_decimals_tests { stake::recalculate_user_stake(@harvest, @alice); // check pool parameters after 10 seconds - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + accum_reward(previous) // 0.500000025000 RewardCoins @@ -480,7 +480,7 @@ module harvest::stake_decimals_tests { // check pool parameters // note: accum_reward recalculated before total_stake was decreased by user unstake - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + accum_reward(previous) // 20160.500672025022 RewardCoins @@ -508,7 +508,7 @@ module harvest::stake_decimals_tests { // check pool parameters after full unstake // note: accum_reward recalculated before total_stake was decreased by user unstake - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + accum_reward(previous) // 20161.500672125022 RewardCoins @@ -578,7 +578,7 @@ module harvest::stake_decimals_tests { let reward_coins = mint_default_coin(1000000400); let duration = 2857144; stake::register_pool(&harvest_acc, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 19.99999999 StakeCoins from alice let coins = @@ -586,7 +586,7 @@ module harvest::stake_decimals_tests { stake::stake(&alice_acc, @harvest, coins); // check pool parameters after first stake - let (reward_per_sec, accum_reward, last_updated, _, _) = + let (reward_per_sec, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // pool_rewards_amount / duration // 3.5 RewardCoins @@ -607,7 +607,7 @@ module harvest::stake_decimals_tests { stake::recalculate_user_stake(@harvest, @alice); // check pool parameters after 10 seconds - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + accum_reward(previous) // 1,750000000875 RewardCoins @@ -657,7 +657,7 @@ module harvest::stake_decimals_tests { // check pool parameters // note: accum_reward recalculated before total_stake was decreased by user unstake - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + accum_reward(previous) // 70561.750023520875 RewardCoins @@ -685,7 +685,7 @@ module harvest::stake_decimals_tests { // check pool parameters after full unstake // note: accum_reward recalculated before total_stake was decreased by user unstake - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + accum_reward(previous) // 70565.250023524375 RewardCoins @@ -763,7 +763,7 @@ module harvest::stake_decimals_tests { let reward_coins = mint_default_coin(100); let duration = 100; stake::register_pool(&harvest_acc, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // wait 15 seconds timestamp::update_global_time_for_test_secs(START_TIME + 15); @@ -774,7 +774,7 @@ module harvest::stake_decimals_tests { stake::stake(&alice_acc, @harvest, coins); // check pool parameters after first stake - let (reward_per_sec, accum_reward, last_updated, _, _) = + let (reward_per_sec, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // pool_rewards_amount / duration // 1 RewardCoins @@ -797,7 +797,7 @@ module harvest::stake_decimals_tests { stake::stake(&bob_acc, @harvest, coins); // check pool parameters after new stake and 15 seconds - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + accum_reward(previous) // 0.75 RewardCoins @@ -830,7 +830,7 @@ module harvest::stake_decimals_tests { stake::stake(&carol_acc, @harvest, coins); // check pool parameters after new stake and 25 seconds - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + accum_reward(previous) // 1.25 RewardCoins @@ -902,7 +902,7 @@ module harvest::stake_decimals_tests { let reward_coins = mint_default_coin(12345); let duration = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); } #[test] @@ -923,6 +923,6 @@ module harvest::stake_decimals_tests { let reward_coins = mint_default_coin(12345); let duration = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); } } diff --git a/tests/stake_nft_boost_tests.move b/tests/stake_nft_boost_tests.move index ff1f15f..1644b0f 100644 --- a/tests/stake_nft_boost_tests.move +++ b/tests/stake_nft_boost_tests.move @@ -66,19 +66,21 @@ module harvest::stake_nft_boost_tests { // register staking pool with rewards and boost config let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; + let lockup_period = 15768000; let boost_config = stake::create_boost_config( @collection_owner, collection_name, 5 ); stake::register_pool(&alice_acc, reward_coins, - duration, option::some(boost_config), vector[]); + duration, lockup_period, option::some(boost_config), vector[]); // check pool statistics - let (reward_per_sec, accum_reward, last_updated, reward_amount, scale) = + let (reward_per_sec, accum_reward, last_updated, reward_amount, scale, pool_lockup_period) = stake::get_pool_info(@alice); let end_ts = stake::get_end_timestamp(@alice); assert!(end_ts == START_TIME + duration, 1); + assert!(pool_lockup_period == lockup_period, 1); assert!(reward_per_sec == 1000000, 1); assert!(accum_reward == 0, 1); assert!(last_updated == START_TIME, 1); @@ -112,7 +114,7 @@ module harvest::stake_nft_boost_tests { 5 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); // stake 500 StakeCoins from alice let coins = @@ -163,7 +165,7 @@ module harvest::stake_nft_boost_tests { 5 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); // stake 500 StakeCoins from alice let coins = @@ -207,7 +209,7 @@ module harvest::stake_nft_boost_tests { 100 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); // stake 100 StakeCoins from alice let coins = @@ -319,7 +321,7 @@ module harvest::stake_nft_boost_tests { 1 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); // stake 500 StakeCoins from alice let coins = @@ -419,13 +421,13 @@ module harvest::stake_nft_boost_tests { 100 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); // register staking pool 2 with rewards no boost config let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // check is boostable assert!(stake::is_boostable(@harvest), 1); @@ -450,7 +452,7 @@ module harvest::stake_nft_boost_tests { 100 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); // stake 500 StakeCoins from alice let coins = @@ -534,7 +536,7 @@ module harvest::stake_nft_boost_tests { 5 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); stake::boost(&harvest, @harvest, nft); } @@ -551,7 +553,7 @@ module harvest::stake_nft_boost_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); let nft = stake::remove_boost(&harvest, @harvest); token::deposit_token(&harvest, nft); @@ -566,7 +568,7 @@ module harvest::stake_nft_boost_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); stake::get_user_boosted(@harvest, @alice); } @@ -580,7 +582,7 @@ module harvest::stake_nft_boost_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); stake::get_user_boosted(@harvest, @alice); } @@ -598,7 +600,7 @@ module harvest::stake_nft_boost_tests { 5 ); stake::register_pool(&harvest, coin::zero(), - 12345, option::some(boost_config), vector[]); + 12345, 0, option::some(boost_config), vector[]); } #[test] @@ -612,7 +614,7 @@ module harvest::stake_nft_boost_tests { 5 ); stake::register_pool(&harvest, coin::zero(), - 12345, option::some(boost_config), vector[]); + 12345, 0, option::some(boost_config), vector[]); } #[test] @@ -629,7 +631,7 @@ module harvest::stake_nft_boost_tests { 0 ); stake::register_pool(&harvest, coin::zero(), - 12345, option::some(boost_config), vector[]); + 12345, 0, option::some(boost_config), vector[]); } #[test] @@ -646,7 +648,7 @@ module harvest::stake_nft_boost_tests { 101 ); stake::register_pool(&harvest, coin::zero(), - 12345, option::some(boost_config), vector[]); + 12345, 0, option::some(boost_config), vector[]); } #[test] @@ -663,7 +665,7 @@ module harvest::stake_nft_boost_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 500 StakeCoins from alice let coins = @@ -683,7 +685,7 @@ module harvest::stake_nft_boost_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); stake::get_boost_config(@harvest); } @@ -708,7 +710,7 @@ module harvest::stake_nft_boost_tests { 5 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); // stake 500 StakeCoins from alice let coins = @@ -741,7 +743,7 @@ module harvest::stake_nft_boost_tests { 5 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); // stake 500 StakeCoins from alice let coins = @@ -772,7 +774,7 @@ module harvest::stake_nft_boost_tests { 5 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); // stake 500 StakeCoins from alice let coins = @@ -793,7 +795,7 @@ module harvest::stake_nft_boost_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 500 StakeCoins from alice let coins = @@ -823,7 +825,7 @@ module harvest::stake_nft_boost_tests { 5 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); // stake 500 StakeCoins from alice let coins = @@ -854,7 +856,7 @@ module harvest::stake_nft_boost_tests { 5 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); // stake 500 StakeCoins from alice let coins = @@ -908,7 +910,7 @@ module harvest::stake_nft_boost_tests { 1 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); // stake 800 StakeCoins from bob let coins = @@ -943,7 +945,7 @@ module harvest::stake_nft_boost_tests { 100 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); let coins = coin::withdraw(&alice_acc, 500000000); @@ -1015,7 +1017,7 @@ module harvest::stake_nft_boost_tests { 100 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); let coins = coin::withdraw(&alice_acc, 500000000); @@ -1090,7 +1092,7 @@ module harvest::stake_nft_boost_tests { 100 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); let coins = coin::withdraw(&alice_acc, 500000000); @@ -1158,7 +1160,7 @@ module harvest::stake_nft_boost_tests { 100 ); stake::register_pool(&harvest, reward_coins, - duration, option::some(boost_config), vector[]); + duration, 0, option::some(boost_config), vector[]); let coins = coin::withdraw(&alice_acc, 500000000); diff --git a/tests/stake_tests.move b/tests/stake_tests.move index fbb97b5..f8753b1 100644 --- a/tests/stake_tests.move +++ b/tests/stake_tests.move @@ -40,14 +40,16 @@ module harvest::stake_tests { // register staking pool with rewards let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; + let lockup_period = 15768000; stake::register_pool(&alice_acc, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); // check pool statistics - let (reward_per_sec, accum_reward, last_updated, reward_amount, scale) = + let (reward_per_sec, accum_reward, last_updated, reward_amount, scale, pool_lockup_period) = stake::get_pool_info(@alice); let end_ts = stake::get_end_timestamp(@alice); assert!(end_ts == START_TIME + duration, 1); + assert!(pool_lockup_period == lockup_period, 1); assert!(reward_per_sec == 1000000, 1); assert!(accum_reward == 0, 1); assert!(last_updated == START_TIME, 1); @@ -68,13 +70,13 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&alice_acc, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // register staking pool 2 with rewards let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&bob_acc, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // check pools exist assert!(stake::pool_exists(@alice), 1); @@ -90,11 +92,11 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // check pool statistics let pool_finish_time = START_TIME + duration; - let (reward_per_sec, _, _, reward_amount, _) = + let (reward_per_sec, _, _, reward_amount, _, _) = stake::get_pool_info(@harvest); let end_ts = stake::get_end_timestamp(@harvest); assert!(end_ts == pool_finish_time, 1); @@ -107,7 +109,7 @@ module harvest::stake_tests { // check pool statistics let pool_finish_time = pool_finish_time + 604800; - let (reward_per_sec, _, _, reward_amount, _) = + let (reward_per_sec, _, _, reward_amount, _, _) = stake::get_pool_info(@harvest); let end_ts = stake::get_end_timestamp(@harvest); assert!(end_ts == pool_finish_time, 1); @@ -123,7 +125,7 @@ module harvest::stake_tests { // check pool statistics let pool_finish_time = pool_finish_time + 604800; - let (reward_per_sec, _, _, reward_amount, _) = + let (reward_per_sec, _, _, reward_amount, _, _) = stake::get_pool_info(@harvest); let end_ts = stake::get_end_timestamp(@harvest); assert!(end_ts == pool_finish_time, 1); @@ -142,7 +144,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // check no stakes assert!(!stake::stake_exists(@harvest, @alice), 1); @@ -202,7 +204,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake from alice let coins = @@ -232,7 +234,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, WEEK_IN_SECONDS, option::none(), vector[]); // stake from alice let coins = @@ -310,7 +312,7 @@ module harvest::stake_tests { let duration = 604805; let start_ts = timestamp::now_seconds(); stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); assert!(stake::get_start_timestamp(@harvest) == start_ts, 1); @@ -335,7 +337,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(604805000000); let duration = 604805; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, WEEK_IN_SECONDS, option::none(), vector[]); // stake from alice let coins = @@ -374,7 +376,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(157680000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 100 StakeCoins from alice let coins = @@ -394,7 +396,7 @@ module harvest::stake_tests { stake::recalculate_user_stake(@harvest, @alice); // check pool parameters - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // (reward_per_sec_rate * time passed / total_staked) + previous period assert!(accum_reward == 1000000000000, 1); @@ -432,7 +434,7 @@ module harvest::stake_tests { stake::recalculate_user_stake(@harvest, @bob); // check pool parameters - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); assert!(accum_reward == 1400000000000, 1); assert!(last_updated == START_TIME + 20, 1); @@ -457,7 +459,7 @@ module harvest::stake_tests { stake::recalculate_user_stake(@harvest, @bob); // check pool parameters - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); assert!(accum_reward == 24193400000000000, 1); assert!(last_updated == START_TIME + 20 + WEEK_IN_SECONDS, 1); @@ -493,7 +495,7 @@ module harvest::stake_tests { stake::recalculate_user_stake(@harvest, @bob); // check pool parameters - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); assert!(accum_reward == 24194066666666666, 1); assert!(last_updated == START_TIME + 30 + WEEK_IN_SECONDS, 1); @@ -530,13 +532,13 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(157680000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // wait one week with empty pool timestamp::update_global_time_for_test_secs(START_TIME + WEEK_IN_SECONDS); // check pool parameters - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); assert!(accum_reward == 0, 1); assert!(last_updated == START_TIME, 1); @@ -553,7 +555,7 @@ module harvest::stake_tests { assert!(stake::get_pending_user_rewards(@harvest, @alice) == 0, 1); // check pool parameters - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); assert!(accum_reward == 0, 1); assert!(last_updated == START_TIME + WEEK_IN_SECONDS, 1); @@ -572,7 +574,7 @@ module harvest::stake_tests { assert!(stake::get_pending_user_rewards(@harvest, @alice) == 6048000000000, 1); // check pool parameters - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // 604800 seconds * 10 rew_per_second / 100 total_staked assert!(accum_reward == 60480000000000000, 1); @@ -591,7 +593,7 @@ module harvest::stake_tests { assert!(stake::get_pending_user_rewards(@harvest, @alice) == 6048000000000, 1); // check pool parameters - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); // 604800 seconds * 10 rew_per_second / 100 total_staked assert!(accum_reward == 60480000000000000, 1); @@ -612,7 +614,7 @@ module harvest::stake_tests { assert!(stake::get_pending_user_rewards(@harvest, @alice) == 6048000000000, 1); // check pool parameters, pool should not accumulate rewards when no stakes in it - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); assert!(accum_reward == 60480000000000000, 1); assert!(last_updated == START_TIME + (WEEK_IN_SECONDS * 5), 1); @@ -630,7 +632,7 @@ module harvest::stake_tests { assert!(stake::get_pending_user_rewards(@harvest, @alice) == 12096000000000, 1); // check pool parameters, pool should not accumulate rewards when no stakes in it - let (_, accum_reward, last_updated, _, _) = + let (_, accum_reward, last_updated, _, _, _) = stake::get_pool_info(@harvest); assert!(accum_reward == 120960000000000000, 1); assert!(last_updated == START_TIME + (WEEK_IN_SECONDS * 6), 1); @@ -650,7 +652,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(157680000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 100 StakeCoins from alice let coins = @@ -729,7 +731,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(157680000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 100 StakeCoins from alice let coins = @@ -763,7 +765,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(302400000000); let duration = 604800; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); let coins = coin::withdraw(&alice_acc, 100000000); @@ -821,7 +823,7 @@ module harvest::stake_tests { // 1 week. let duration = WEEK_IN_SECONDS; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake alice. let coins = @@ -881,7 +883,7 @@ module harvest::stake_tests { // 10 years. let duration = 31536000 * 10; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake alice. let coins = @@ -925,7 +927,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(reward_coins_val); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 100 StakeCoins from alice let coins = @@ -957,7 +959,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(157680000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); let coins = coin::withdraw(&alice_acc, 100000000); @@ -1020,7 +1022,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(12345); let duration = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // check pool exists after register let exists = stake::pool_exists(@harvest); @@ -1037,7 +1039,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(12345); let duration = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // check stake exists before alice stake let exists = stake::stake_exists(@harvest, @alice); @@ -1063,7 +1065,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(12345); let duration = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 50 StakeCoins from alice let coins = @@ -1105,7 +1107,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 100 StakeCoins from alice let coins = @@ -1113,7 +1115,7 @@ module harvest::stake_tests { stake::stake(&alice_acc, @harvest, coins); // check stake earned and pool accum_reward - let (_, accum_reward, _, _, _) = + let (_, accum_reward, _, _, _, _) = stake::get_pool_info(@harvest); assert!(accum_reward == 0, 1); assert!(stake::get_pending_user_rewards(@harvest, @alice) == 0, 1); @@ -1125,7 +1127,7 @@ module harvest::stake_tests { assert!(stake::get_pending_user_rewards(@harvest, @alice) == 604800000000, 1); // check get_pending_user_rewards calculations didn't affect pool accum_reward - let (_, accum_reward, _, _, _) = + let (_, accum_reward, _, _, _, _) = stake::get_pool_info(@harvest); assert!(accum_reward == 0, 1); @@ -1158,7 +1160,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // check pool expiration date let end_ts = stake::get_end_timestamp(@harvest); @@ -1276,9 +1278,9 @@ module harvest::stake_tests { // register staking pool twice let duration = 12345; stake::register_pool(&alice_acc, reward_coins_1, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); stake::register_pool(&alice_acc, reward_coins_2, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); } #[test] @@ -1289,8 +1291,9 @@ module harvest::stake_tests { // register staking pool with rewards let reward_coins = coin::zero(); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); } #[test] @@ -1301,8 +1304,9 @@ module harvest::stake_tests { // register staking pool with rewards let reward_coins = mint_default_coin(12345); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake::get_user_stake(@harvest, @alice); } @@ -1315,8 +1319,9 @@ module harvest::stake_tests { // register staking pool with rewards let reward_coins = mint_default_coin(12345); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake::get_pending_user_rewards(@harvest, @alice); } @@ -1329,8 +1334,9 @@ module harvest::stake_tests { // register staking pool with rewards let reward_coins = mint_default_coin(12345); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake::get_unlock_time(@harvest, @alice); } @@ -1343,8 +1349,9 @@ module harvest::stake_tests { // register staking pool with rewards let reward_coins = mint_default_coin(12345); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); stake::is_unlocked(@harvest, @alice); } @@ -1357,8 +1364,9 @@ module harvest::stake_tests { // register staking pool with rewards let reward_coins = mint_default_coin(12345); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); // unstake when stake not exists let coins = @@ -1374,8 +1382,9 @@ module harvest::stake_tests { // register staking pool with rewards let reward_coins = mint_default_coin(12345); let duration = 12345; + let lockup_period = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); // harvest when stake not exists let coins = @@ -1394,7 +1403,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(12345); let duration = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 99 StakeCoins from alice let coins = @@ -1419,7 +1428,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(12345); let duration = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 0 StakeCoins coin::register(&harvest); @@ -1437,7 +1446,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(12345); let duration = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // unstake 0 StakeCoins let coins = @@ -1454,7 +1463,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(12345); let duration = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // deposit 0 RewardCoins let reward_coins = coin::zero(); @@ -1474,7 +1483,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(12345); let duration = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 100 StakeCoins from alice let coins = @@ -1500,7 +1509,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(12345); let duration = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 100 StakeCoins from alice let coins = @@ -1533,7 +1542,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(12345); let duration = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); } #[test] @@ -1550,7 +1559,7 @@ module harvest::stake_tests { let reward_coins = coin::zero(); let duration = 12345; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); } #[test] @@ -1563,8 +1572,9 @@ module harvest::stake_tests { // register staking pool with rewards let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; + let lockup_period = 3000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, lockup_period, option::none(), vector[]); // stake from alice let coins = @@ -1572,7 +1582,7 @@ module harvest::stake_tests { stake::stake(&alice_acc, @harvest, coins); // wait almost a week - timestamp::update_global_time_for_test_secs(START_TIME + WEEK_IN_SECONDS - 1); + timestamp::update_global_time_for_test_secs(START_TIME + lockup_period - 1); // unstake from alice let coins = @@ -1589,7 +1599,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(12345); let duration = 0; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); } #[test] @@ -1601,7 +1611,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // deposit rewards less than rew_per_sec pool rate let reward_coins = mint_default_coin(999999); @@ -1618,7 +1628,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); } // Withdraw rewards tests. @@ -1633,7 +1643,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(157680000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); let reward_coins = stake::withdraw_to_treasury(&treasury, @harvest, 157680000000000); coin::deposit(@treasury, reward_coins); @@ -1648,7 +1658,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(157680000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); stake_config::enable_global_emergency(&emergency); @@ -1665,7 +1675,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(157680000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); stake_config::enable_global_emergency(&emergency); @@ -1684,7 +1694,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(157680000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); timestamp::update_global_time_for_test_secs(START_TIME + duration + 7257600); @@ -1703,7 +1713,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(157680000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); timestamp::update_global_time_for_test_secs(START_TIME + duration + 7257600); stake_config::enable_global_emergency(&emergency); @@ -1724,7 +1734,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(157680000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); timestamp::update_global_time_for_test_secs(START_TIME + duration + 7257599); @@ -1748,7 +1758,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 100 StakeCoins from alice let coins = @@ -1789,7 +1799,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, WEEK_IN_SECONDS, option::none(), vector[]); let coins = coin::withdraw(&alice_acc, 100000000); @@ -1844,7 +1854,7 @@ module harvest::stake_tests { let reward_coins = mint_default_coin(606000000000); stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); let coins = coin::withdraw(&alice_acc, 30000000000000); diff --git a/tests/staking_epochs_tests.move b/tests/staking_epochs_tests.move index 47b2e5d..97992d4 100644 --- a/tests/staking_epochs_tests.move +++ b/tests/staking_epochs_tests.move @@ -27,7 +27,7 @@ module harvest::staking_epochs_tests_move { let reward_coins = mint_default_coin(amount(1000, 0)); let duration = 500; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // check 0 epoch fields let (rewards_amount, reward_per_sec, accum_reward,start_time, @@ -104,7 +104,7 @@ module harvest::staking_epochs_tests_move { let reward_coins = mint_default_coin(amount(1000, 0)); let duration = 500; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // check 0 epoch fields let (rewards_amount, reward_per_sec, accum_reward,start_time, @@ -184,7 +184,7 @@ module harvest::staking_epochs_tests_move { let reward_coins = mint_default_coin(amount(1000, 0)); let duration = 500; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // check 0 epoch fields let (rewards_amount, reward_per_sec, accum_reward,start_time, @@ -279,7 +279,7 @@ module harvest::staking_epochs_tests_move { let reward_coins = mint_default_coin(amount(1000, 0)); let duration = 500; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // check 0 epoch fields let (rewards_amount, reward_per_sec, accum_reward,start_time, @@ -371,7 +371,7 @@ module harvest::staking_epochs_tests_move { let reward_coins = mint_default_coin(amount(157680000, 0)); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake some coins let coins = @@ -475,7 +475,7 @@ module harvest::staking_epochs_tests_move { let reward_coins = mint_default_coin(amount(1000, 0)); let duration = 5_000_000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // stake 100 from alice stake::stake(&alice_acc, @harvest, coin::withdraw(&alice_acc, amount(100, 0))); @@ -554,7 +554,7 @@ module harvest::staking_epochs_tests_move { let reward_coins = mint_default_coin(amount(1000, 0)); let duration = 500; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); // wait till the end of first epoch and a minute more timestamp::update_global_time_for_test_secs(START_TIME + duration + 60); diff --git a/tests/whitelist_tests.move b/tests/whitelist_tests.move index 5e5d021..fff5e9e 100644 --- a/tests/whitelist_tests.move +++ b/tests/whitelist_tests.move @@ -49,7 +49,7 @@ module harvest::whitelist_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[@alice]); + duration, 0, option::none(), vector[@alice]); // check no stakes assert!(!stake::stake_exists(@harvest, @alice), 1); @@ -79,7 +79,7 @@ module harvest::whitelist_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[@alice, @bob]); + duration, 0, option::none(), vector[@alice, @bob]); // check no stakes assert!(!stake::stake_exists(@harvest, @alice), 1); @@ -119,7 +119,7 @@ module harvest::whitelist_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[@alice]); + duration, 0, option::none(), vector[@alice]); // check whitelist assert!(stake::is_whitelisted(@harvest, @alice), 1); @@ -142,7 +142,7 @@ module harvest::whitelist_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[@0x41, @0x42]); + duration, 0, option::none(), vector[@0x41, @0x42]); // check whitelist assert!(!stake::is_whitelisted(@harvest, @alice), 1); @@ -188,7 +188,7 @@ module harvest::whitelist_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[@alice, @bob]); + duration, 0, option::none(), vector[@alice, @bob]); // check whitelist assert!(stake::is_whitelisted(@harvest, @alice), 1); @@ -229,7 +229,7 @@ module harvest::whitelist_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[@alice, @bob]); + duration, 0, option::none(), vector[@alice, @bob]); // check whitelist assert!(stake::is_whitelisted(@harvest, @alice), 1); @@ -259,7 +259,7 @@ module harvest::whitelist_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[@bob]); + duration, 0, option::none(), vector[@bob]); // check whitelist assert!(!stake::is_whitelisted(@harvest, @alice), 1); @@ -327,7 +327,7 @@ module harvest::whitelist_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); stake::add_into_whitelist(&alice_acc, vector[@alice]); } @@ -342,7 +342,7 @@ module harvest::whitelist_tests { let reward_coins = mint_default_coin(15768000000000); let duration = 15768000; stake::register_pool(&harvest, reward_coins, - duration, option::none(), vector[]); + duration, 0, option::none(), vector[]); stake::remove_from_whitelist(&alice_acc, @alice); }