TestWithdrawDelegationRewardWithCommission
This commit is contained in:
parent
8e378e2b2d
commit
8cb6d106d1
|
@ -47,7 +47,42 @@ func TestWithdrawDelegationRewardBasic(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestWithdrawDelegationRewardWithCommission(t *testing.T) {
|
||||
ctx, accMapper, keeper, sk, fck := CreateTestInputAdvanced(t, false, 100, sdk.ZeroDec())
|
||||
stakeHandler := stake.NewHandler(sk)
|
||||
denom := sk.GetParams(ctx).BondDenom
|
||||
|
||||
//first make a validator with 10% commission
|
||||
msgCreateValidator := stake.NewTestMsgCreateValidatorWithCommission(
|
||||
valOpAddr1, valConsPk1, 10, sdk.NewDecWithPrec(1, 1))
|
||||
got := stakeHandler(ctx, msgCreateValidator)
|
||||
require.True(t, got.IsOK(), "expected msg to be ok, got %v", got)
|
||||
_ = sk.ApplyAndReturnValidatorSetUpdates(ctx)
|
||||
|
||||
// delegate
|
||||
msgDelegate := stake.NewTestMsgDelegate(delAddr1, valOpAddr1, 10)
|
||||
got = stakeHandler(ctx, msgDelegate)
|
||||
require.True(t, got.IsOK())
|
||||
amt := accMapper.GetAccount(ctx, delAddr1).GetCoins().AmountOf(denom)
|
||||
require.Equal(t, int64(90), amt.Int64())
|
||||
|
||||
totalPower := int64(20)
|
||||
totalPowerDec := sdk.NewDec(totalPower)
|
||||
|
||||
// allocate 100 denom of fees
|
||||
feeInputs := sdk.NewInt(100)
|
||||
fck.SetCollectedFees(sdk.Coins{sdk.NewCoin(denom, feeInputs)})
|
||||
require.Equal(t, feeInputs, fck.GetCollectedFees(ctx).AmountOf(denom))
|
||||
keeper.SetProposerConsAddr(ctx, valConsAddr1)
|
||||
keeper.SetSumPrecommitPower(ctx, totalPowerDec)
|
||||
keeper.AllocateFees(ctx)
|
||||
|
||||
// withdraw delegation
|
||||
ctx = ctx.WithBlockHeight(1)
|
||||
keeper.WithdrawDelegationReward(ctx, delAddr1, valOpAddr1)
|
||||
amt = accMapper.GetAccount(ctx, delAddr1).GetCoins().AmountOf(denom)
|
||||
|
||||
expRes := sdk.NewDec(90).Add(sdk.NewDec(90).Quo(sdk.NewDec(2))) // 90 + 100*90% tokens * 10/20
|
||||
require.True(sdk.DecEq(t, expRes, sdk.NewDecFromInt(amt)))
|
||||
}
|
||||
|
||||
func TestWithdrawDelegationRewardsAll(t *testing.T) {
|
||||
|
|
|
@ -104,7 +104,7 @@ func handleMsgCreateValidator(ctx sdk.Context, msg types.MsgCreateValidator, k k
|
|||
|
||||
validator := NewValidator(msg.ValidatorAddr, msg.PubKey, msg.Description)
|
||||
commission := NewCommissionWithTime(
|
||||
msg.Commission.Rate, msg.Commission.MaxChangeRate,
|
||||
msg.Commission.Rate, msg.Commission.MaxRate,
|
||||
msg.Commission.MaxChangeRate, ctx.BlockHeader().Time,
|
||||
)
|
||||
validator, err := validator.SetInitialCommission(commission)
|
||||
|
|
|
@ -32,6 +32,16 @@ func NewTestMsgCreateValidator(address sdk.ValAddress, pubKey crypto.PubKey, amt
|
|||
)
|
||||
}
|
||||
|
||||
func NewTestMsgCreateValidatorWithCommission(address sdk.ValAddress, pubKey crypto.PubKey,
|
||||
amt int64, commissionRate sdk.Dec) MsgCreateValidator {
|
||||
|
||||
commission := NewCommissionMsg(commissionRate, sdk.OneDec(), sdk.ZeroDec())
|
||||
|
||||
return types.NewMsgCreateValidator(
|
||||
address, pubKey, sdk.NewCoin("steak", sdk.NewInt(amt)), Description{}, commission,
|
||||
)
|
||||
}
|
||||
|
||||
func NewTestMsgDelegate(delAddr sdk.AccAddress, valAddr sdk.ValAddress, amt int64) MsgDelegate {
|
||||
return MsgDelegate{
|
||||
DelegatorAddr: delAddr,
|
||||
|
|
Loading…
Reference in New Issue