@@ -2859,7 +2859,7 @@ mod offchain_phragmen {
28592859 }
28602860
28612861 #[ test]
2862- fn offchain_election_flag_is_triggered ( ) {
2862+ fn offchain_window_is_triggered ( ) {
28632863 ExtBuilder :: default ( )
28642864 . session_per_era ( 5 )
28652865 . session_length ( 10 )
@@ -2919,28 +2919,104 @@ mod offchain_phragmen {
29192919 }
29202920
29212921 #[ test]
2922- fn offchain_election_flag_is_triggered_when_forcing ( ) {
2922+ fn offchain_window_is_triggered_when_forcing ( ) {
29232923 ExtBuilder :: default ( )
29242924 . session_per_era ( 5 )
29252925 . session_length ( 10 )
29262926 . election_lookahead ( 3 )
29272927 . build ( )
29282928 . execute_with ( || {
2929- run_to_block ( 7 ) ;
2930- assert_session_era ! ( 0 , 0 ) ;
2931-
29322929 run_to_block ( 12 ) ;
29332930 ForceEra :: put ( Forcing :: ForceNew ) ;
29342931 run_to_block ( 13 ) ;
29352932 assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Closed ) ;
29362933
29372934 run_to_block ( 17 ) ; // instead of 47
29382935 assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Open ( 17 ) ) ;
2936+
2937+ run_to_block ( 20 ) ;
2938+ assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Closed ) ;
2939+ } )
2940+ }
2941+
2942+ #[ test]
2943+ fn offchain_window_is_triggered_when_force_always ( ) {
2944+ ExtBuilder :: default ( )
2945+ . session_per_era ( 5 )
2946+ . session_length ( 10 )
2947+ . election_lookahead ( 3 )
2948+ . build ( )
2949+ . execute_with ( || {
2950+
2951+ ForceEra :: put ( Forcing :: ForceAlways ) ;
2952+ run_to_block ( 16 ) ;
2953+ assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Closed ) ;
2954+
2955+ run_to_block ( 17 ) ; // instead of 37
2956+ assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Open ( 17 ) ) ;
2957+
2958+ run_to_block ( 20 ) ;
2959+ assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Closed ) ;
2960+
2961+ run_to_block ( 26 ) ;
2962+ assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Closed ) ;
2963+
2964+ run_to_block ( 27 ) ; // next one again
2965+ assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Open ( 27 ) ) ;
2966+ } )
2967+ }
2968+
2969+ #[ test]
2970+ fn offchain_window_closes_when_forcenone ( ) {
2971+ ExtBuilder :: default ( )
2972+ . session_per_era ( 5 )
2973+ . session_length ( 10 )
2974+ . election_lookahead ( 3 )
2975+ . build ( )
2976+ . execute_with ( || {
2977+ ForceEra :: put ( Forcing :: ForceNone ) ;
2978+
2979+ run_to_block ( 36 ) ;
2980+ assert_session_era ! ( 3 , 0 ) ;
2981+ assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Closed ) ;
2982+
2983+ // opens
2984+ run_to_block ( 37 ) ;
2985+ assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Open ( 37 ) ) ;
2986+ assert ! ( Staking :: is_current_session_final( ) ) ;
2987+ assert ! ( Staking :: snapshot_validators( ) . is_some( ) ) ;
2988+
2989+ // closes normally
2990+ run_to_block ( 40 ) ;
2991+ assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Closed ) ;
2992+ assert ! ( !Staking :: is_current_session_final( ) ) ;
2993+ assert ! ( Staking :: snapshot_validators( ) . is_none( ) ) ;
2994+ assert_session_era ! ( 4 , 0 ) ;
2995+
2996+ run_to_block ( 47 ) ;
2997+ assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Closed ) ;
2998+ assert_session_era ! ( 4 , 0 ) ;
2999+
3000+ run_to_block ( 57 ) ;
3001+ assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Closed ) ;
3002+ assert_session_era ! ( 5 , 0 ) ;
3003+
3004+ run_to_block ( 67 ) ;
3005+ assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Closed ) ;
3006+
3007+ // Will not open again as scheduled
3008+ run_to_block ( 87 ) ;
3009+ assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Closed ) ;
3010+ assert_session_era ! ( 8 , 0 ) ;
3011+
3012+ run_to_block ( 90 ) ;
3013+ assert_eq ! ( Staking :: era_election_status( ) , ElectionStatus :: Closed ) ;
3014+ assert_session_era ! ( 9 , 0 ) ;
29393015 } )
29403016 }
29413017
29423018 #[ test]
2943- fn election_on_chain_fallback_works ( ) {
3019+ fn offchain_window_on_chain_fallback_works ( ) {
29443020 ExtBuilder :: default ( ) . build_and_execute ( || {
29453021 start_session ( 1 ) ;
29463022 start_session ( 2 ) ;
0 commit comments