@@ -2358,3 +2358,52 @@ fn get_stakers_enable_disable_btc_tokens_flow_test() {
23582358 . span ();
23592359 assert! (stakers == expected_stakers );
23602360}
2361+
2362+ /// Flow:
2363+ /// 2 Stakers stake.
2364+ /// Test get_stakers.
2365+ /// Staker 1 increase stake.
2366+ /// Test get_stakers.
2367+ #[test]
2368+ fn get_stakers_increase_stake_flow_test () {
2369+ let cfg : StakingInitConfig = Default :: default ();
2370+ let mut system = SystemConfigTrait :: basic_stake_flow_cfg (: cfg ). deploy ();
2371+ let stake_amount = system . staking. get_min_stake ();
2372+ let staking_consensus = system . staking. consensus_dispatcher ();
2373+ let staker_1 = system . new_staker (amount : stake_amount * 2 );
2374+ let staker_2 = system . new_staker (amount : stake_amount );
2375+ system . stake (staker : staker_1 , amount : stake_amount , pool_enabled : false , commission : 200 );
2376+ system . stake (staker : staker_2 , amount : stake_amount , pool_enabled : false , commission : 200 );
2377+ system . advance_k_epochs ();
2378+
2379+ // Test get_stakers
2380+ let stakers = staking_consensus . get_stakers (epoch_id : system . staking. get_current_epoch ());
2381+ let expected_stakers = array! [
2382+ (staker_1 . staker. address, STRK_WEIGHT_FACTOR / 2 , Option :: None ),
2383+ (staker_2 . staker. address, STRK_WEIGHT_FACTOR / 2 , Option :: None ),
2384+ ]
2385+ . span ();
2386+ assert! (stakers == expected_stakers );
2387+
2388+ // Staker 1 increase stake.
2389+ system . increase_stake (staker : staker_1 , amount : stake_amount );
2390+
2391+ // Test same epoch.
2392+ let stakers = staking_consensus . get_stakers (epoch_id : system . staking. get_current_epoch ());
2393+ let expected_stakers = array! [
2394+ (staker_1 . staker. address, STRK_WEIGHT_FACTOR / 2 , Option :: None ),
2395+ (staker_2 . staker. address, STRK_WEIGHT_FACTOR / 2 , Option :: None ),
2396+ ]
2397+ . span ();
2398+ assert! (stakers == expected_stakers );
2399+
2400+ // Test after K epochs.
2401+ system . advance_k_epochs ();
2402+ let stakers = staking_consensus . get_stakers (epoch_id : system . staking. get_current_epoch ());
2403+ let expected_stakers = array! [
2404+ (staker_1 . staker. address, STRK_WEIGHT_FACTOR * 2 / 3 , Option :: None ),
2405+ (staker_2 . staker. address, STRK_WEIGHT_FACTOR / 3 , Option :: None ),
2406+ ]
2407+ . span ();
2408+ assert! (stakers == expected_stakers );
2409+ }
0 commit comments