github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/staking/keeper/proxy_test.go (about) 1 package keeper 2 3 import ( 4 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 5 "github.com/fibonacci-chain/fbc/x/staking/types" 6 "github.com/stretchr/testify/require" 7 8 "testing" 9 ) 10 11 func TestAddSharesToValidatorsAndWithdraw(t *testing.T) { 12 ctx, _, mkeeper := CreateTestInput(t, false, 0) 13 keeper := mkeeper.Keeper 14 valsOld := createVals(ctx, 4, keeper) 15 16 // never add shares before 17 dlgAddr := addrDels[0] 18 lastVals, lastShares := keeper.GetLastValsAddedSharesExisted(ctx, dlgAddr) 19 require.Nil(t, lastVals) 20 require.True(t, lastShares.IsZero()) 21 22 // withdraw the shares last time 23 keeper.WithdrawLastShares(ctx, dlgAddr, lastVals, lastShares) 24 25 // add shares to validators 26 sharesOrig := sdk.NewDec(10000) 27 _, e := keeper.AddSharesToValidators(ctx, dlgAddr, valsOld, sharesOrig) 28 require.Nil(t, e) 29 30 // check valsOld status 31 valsNew := getVals(ctx, valsOld, keeper, t) 32 for i := 0; i < 4; i++ { 33 require.True(t, valsNew[i].DelegatorShares.GT(valsOld[i].DelegatorShares), 34 valsNew[i].Standardize().String(), valsOld[i].Standardize().String()) 35 36 // check shares 37 shares, found := keeper.GetShares(ctx, dlgAddr, valsNew[i].OperatorAddress) 38 require.True(t, found) 39 require.True(t, shares.GT(lastShares), shares) 40 } 41 42 // standardize 43 sVals := valsNew.Standardize() 44 require.NotNil(t, sVals) 45 r, err := sVals.MarshalYAML() 46 require.Nil(t, err) 47 require.Contains(t, r, "Operator Address") 48 } 49 50 func createVals(ctx sdk.Context, num int, keeper Keeper) types.Validators { 51 vals := make(types.Validators, num) 52 for i := 0; i < num; i++ { 53 vals[i] = types.NewValidator(addrVals[i], PKs[i], types.Description{}, types.DefaultMinSelfDelegation) 54 keeper.SetValidator(ctx, vals[i]) 55 } 56 57 return vals 58 } 59 60 func getVals(ctx sdk.Context, valOld types.Validators, keeper Keeper, t *testing.T) types.Validators { 61 lenVals := len(valOld) 62 gotVals := make(types.Validators, lenVals) 63 for i := 0; i < lenVals; i++ { 64 val, found := keeper.GetValidator(ctx, valOld[i].OperatorAddress) 65 require.True(t, found) 66 gotVals[i] = val 67 } 68 return gotVals 69 }