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