@@ -2093,7 +2093,7 @@ fn singular_staking_info_unstake_during_voting_is_ok() {
2093
2093
let unstake_amount_1 = 5 ;
2094
2094
assert_eq ! (
2095
2095
staking_info. unstake( unstake_amount_1, era_1, Subperiod :: Voting ) ,
2096
- ( unstake_amount_1 , Balance :: zero( ) )
2096
+ ( era_1 , Balance :: zero( ) )
2097
2097
) ;
2098
2098
assert_eq ! (
2099
2099
staking_info. total_staked_amount( ) ,
@@ -2111,7 +2111,7 @@ fn singular_staking_info_unstake_during_voting_is_ok() {
2111
2111
let remaining_stake = staking_info. total_staked_amount ( ) ;
2112
2112
assert_eq ! (
2113
2113
staking_info. unstake( remaining_stake + 1 , era_2, Subperiod :: Voting ) ,
2114
- ( remaining_stake , Balance :: zero( ) )
2114
+ ( EraNumber :: zero ( ) , Balance :: zero( ) )
2115
2115
) ;
2116
2116
assert ! ( staking_info. total_staked_amount( ) . is_zero( ) ) ;
2117
2117
assert ! (
@@ -2138,7 +2138,7 @@ fn singular_staking_info_unstake_during_bep_is_ok() {
2138
2138
let unstake_1 = 5 ;
2139
2139
assert_eq ! (
2140
2140
staking_info. unstake( 5 , era_1, Subperiod :: BuildAndEarn ) ,
2141
- ( Balance :: zero( ) , unstake_1 )
2141
+ ( era_1 , Balance :: zero( ) )
2142
2142
) ;
2143
2143
assert_eq ! (
2144
2144
staking_info. total_staked_amount( ) ,
@@ -2169,7 +2169,7 @@ fn singular_staking_info_unstake_during_bep_is_ok() {
2169
2169
2170
2170
assert_eq ! (
2171
2171
staking_info. unstake( unstake_2, era_2, Subperiod :: BuildAndEarn ) ,
2172
- ( voting_stake_overflow , current_bep_stake )
2172
+ ( EraNumber :: zero ( ) , Balance :: zero ( ) )
2173
2173
) ;
2174
2174
assert_eq ! (
2175
2175
staking_info. total_staked_amount( ) ,
@@ -2458,7 +2458,12 @@ fn contract_stake_amount_unstake_is_ok() {
2458
2458
2459
2459
// 1st scenario - unstake in the same era, from `Voting` subperiod
2460
2460
let amount_1 = 5 ;
2461
- contract_stake. unstake ( amount_1, 0 , period_info, era_1) ;
2461
+ contract_stake. unstake (
2462
+ amount_1,
2463
+ period_info,
2464
+ era_1,
2465
+ ( EraNumber :: zero ( ) , Balance :: zero ( ) ) ,
2466
+ ) ;
2462
2467
assert_eq ! (
2463
2468
contract_stake. total_staked_amount( period) ,
2464
2469
total_stake_amount - amount_1
@@ -2477,19 +2482,23 @@ fn contract_stake_amount_unstake_is_ok() {
2477
2482
next_subperiod_start_era : 40 ,
2478
2483
} ;
2479
2484
2480
- contract_stake. unstake ( amount_1, 0 , period_info, era_2) ;
2485
+ contract_stake. unstake (
2486
+ amount_1,
2487
+ period_info,
2488
+ era_2,
2489
+ ( EraNumber :: zero ( ) , Balance :: zero ( ) ) ,
2490
+ ) ;
2481
2491
assert_eq ! (
2482
2492
contract_stake. total_staked_amount( period) ,
2483
2493
total_stake_amount - amount_1 * 2
2484
2494
) ;
2485
2495
assert_eq ! (
2486
2496
contract_stake. staked_amount( period, Subperiod :: Voting ) ,
2487
- vp_stake_amount - amount_1 * 2
2497
+ vp_stake_amount - amount_1
2488
2498
) ;
2489
2499
assert_eq ! (
2490
2500
contract_stake. staked_amount( period, Subperiod :: BuildAndEarn ) ,
2491
- bep_stake_amount,
2492
- "Must remain unchanged."
2501
+ bep_stake_amount - amount_1,
2493
2502
) ;
2494
2503
assert ! (
2495
2504
!contract_stake. staked. is_empty( ) ,
@@ -2501,35 +2510,45 @@ fn contract_stake_amount_unstake_is_ok() {
2501
2510
) ;
2502
2511
2503
2512
// 3rd scenario - same as previous scenario, but for `BuildAndEarn` subperiod
2504
- contract_stake. unstake ( 0 , amount_1, period_info, era_2) ;
2513
+ contract_stake. unstake (
2514
+ amount_1,
2515
+ period_info,
2516
+ era_2,
2517
+ ( EraNumber :: zero ( ) , Balance :: zero ( ) ) ,
2518
+ ) ;
2505
2519
assert_eq ! (
2506
2520
contract_stake. total_staked_amount( period) ,
2507
2521
total_stake_amount - amount_1 * 3
2508
2522
) ;
2509
2523
assert_eq ! (
2510
2524
contract_stake. staked_amount( period, Subperiod :: Voting ) ,
2511
- vp_stake_amount - amount_1 * 2
2525
+ vp_stake_amount - amount_1
2512
2526
) ;
2513
2527
assert_eq ! (
2514
2528
contract_stake. staked_amount( period, Subperiod :: BuildAndEarn ) ,
2515
- bep_stake_amount - amount_1
2529
+ bep_stake_amount - amount_1 * 2
2516
2530
) ;
2517
2531
2518
2532
// 4th scenario - bump up unstake eras by more than 1, entries should be aligned to the current era
2519
2533
let era_3 = era_2 + 3 ;
2520
2534
let amount_2 = 7 ;
2521
- contract_stake. unstake ( 0 , amount_2, period_info, era_3) ;
2535
+ contract_stake. unstake (
2536
+ amount_2,
2537
+ period_info,
2538
+ era_3,
2539
+ ( EraNumber :: zero ( ) , Balance :: zero ( ) ) ,
2540
+ ) ;
2522
2541
assert_eq ! (
2523
2542
contract_stake. total_staked_amount( period) ,
2524
2543
total_stake_amount - amount_1 * 3 - amount_2
2525
2544
) ;
2526
2545
assert_eq ! (
2527
2546
contract_stake. staked_amount( period, Subperiod :: Voting ) ,
2528
- vp_stake_amount - amount_1 * 2
2547
+ vp_stake_amount - amount_1
2529
2548
) ;
2530
2549
assert_eq ! (
2531
2550
contract_stake. staked_amount( period, Subperiod :: BuildAndEarn ) ,
2532
- bep_stake_amount - amount_1 - amount_2
2551
+ bep_stake_amount - amount_1 * 2 - amount_2
2533
2552
) ;
2534
2553
assert_eq ! (
2535
2554
contract_stake. staked. era, era_3,
@@ -2542,12 +2561,15 @@ fn contract_stake_amount_unstake_is_ok() {
2542
2561
2543
2562
// 5th scenario - do a full unstake with existing future entry, expect a cleanup
2544
2563
contract_stake. stake ( total_stake_amount, period_info, era_3) ;
2564
+
2565
+ println ! ( "{:?}" , contract_stake) ;
2545
2566
contract_stake. unstake (
2546
- contract_stake. staked_amount ( period, Subperiod :: Voting ) ,
2547
- contract_stake. staked_amount ( period, Subperiod :: BuildAndEarn ) ,
2567
+ contract_stake. total_staked_amount ( period) ,
2548
2568
period_info,
2549
2569
era_3,
2570
+ ( EraNumber :: zero ( ) , Balance :: zero ( ) ) ,
2550
2571
) ;
2572
+ println ! ( "Contract stake after: {:?}" , contract_stake) ;
2551
2573
assert ! ( contract_stake. staked. is_empty( ) ) ;
2552
2574
assert ! ( contract_stake. staked_future. is_none( ) ) ;
2553
2575
}
0 commit comments