@@ -1957,3 +1957,40 @@ fn get_stakers_staker_exit_intent_flow_test() {
19571957 let stakers = staking_consensus . get_stakers (: epoch_id );
19581958 assert! (stakers == expected_stakers );
19591959}
1960+
1961+ /// Flow:
1962+ /// Staker stake
1963+ /// Advance K epochs
1964+ /// Test get_stakers
1965+ /// Staker exit intent
1966+ /// Wait for exit wait window
1967+ /// Staker exit action
1968+ /// Test get_stakers
1969+ #[test]
1970+ fn get_stakers_staker_exit_action_flow_test () {
1971+ let cfg : StakingInitConfig = Default :: default ();
1972+ let mut system = SystemConfigTrait :: basic_stake_flow_cfg (: cfg ). deploy ();
1973+ let amount = system . staking. get_min_stake ();
1974+ let staker = system . new_staker (: amount );
1975+ system . stake (: staker , : amount , pool_enabled : false , commission : 200 );
1976+ let staking = system . staking. dispatcher ();
1977+ let staking_consensus = system . staking. consensus_dispatcher ();
1978+ system . advance_k_epochs ();
1979+
1980+ // Test get_stakers
1981+ let epoch_id = staking . get_current_epoch ();
1982+ let stakers = staking_consensus . get_stakers (: epoch_id );
1983+ let expected_stakers = array! [(staker . staker. address, STRK_WEIGHT_FACTOR , Option :: None )]. span ();
1984+ assert! (stakers == expected_stakers );
1985+
1986+ // Staker exit
1987+ system . staker_exit_intent (: staker );
1988+ system . advance_time (time : system . staking. get_exit_wait_window ());
1989+ system . staker_exit_action (: staker );
1990+
1991+ // Test get_stakers
1992+ let epoch_id = staking . get_current_epoch ();
1993+ let stakers = staking_consensus . get_stakers (: epoch_id );
1994+ let expected_stakers = array! []. span ();
1995+ assert! (stakers == expected_stakers );
1996+ }
0 commit comments