diff --git a/x/distribution/keeper/delegation_test.go b/x/distribution/keeper/delegation_test.go index 8ff99e4110..2e085cf20e 100644 --- a/x/distribution/keeper/delegation_test.go +++ b/x/distribution/keeper/delegation_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" ) -func TestWithdrawDelegationReward(t *testing.T) { - ctx, accMapper, keeper, sk, fck := CreateTestInputDefault(t, false, 100) +func TestWithdrawDelegationRewardBasic(t *testing.T) { + ctx, accMapper, keeper, sk, fck := CreateTestInputAdvanced(t, false, 100, sdk.ZeroDec()) stakeHandler := stake.NewHandler(sk) denom := sk.GetParams(ctx).BondDenom @@ -23,18 +23,31 @@ func TestWithdrawDelegationReward(t *testing.T) { 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()) - feeInputs := sdk.NewInt(20) + 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) - require.Equal(t, int64(100), amt.Int64()) + + expRes := sdk.NewDec(90).Add(sdk.NewDec(100).Quo(sdk.NewDec(2))) // 90 + 100 tokens * 10/20 + require.True(sdk.DecEq(t, expRes, sdk.NewDecFromInt(amt))) +} + +func TestWithdrawDelegationRewardWithCommission(t *testing.T) { + } func TestWithdrawDelegationRewardsAll(t *testing.T) {