cosmos-sdk/x/distribution/proposal_handler_test.go

68 lines
2.0 KiB
Go

package distribution
import (
"testing"
"github.com/tendermint/tendermint/crypto/ed25519"
"github.com/stretchr/testify/require"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/distribution/types"
)
var (
delPk1 = ed25519.GenPrivKey().PubKey()
delAddr1 = sdk.AccAddress(delPk1.Address())
amount = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1)))
)
func testProposal(recipient sdk.AccAddress, amount sdk.Coins) types.CommunityPoolSpendProposal {
return types.NewCommunityPoolSpendProposal("Test", "description", recipient, amount)
}
func TestProposalHandlerPassed(t *testing.T) {
ctx, ak, bk, keeper, _, supplyKeeper := CreateTestInputDefault(t, false, 10)
recipient := delAddr1
// add coins to the module account
macc := keeper.GetDistributionAccount(ctx)
balances := bk.GetAllBalances(ctx, macc.GetAddress())
err := bk.SetBalances(ctx, macc.GetAddress(), balances.Add(amount...))
require.NoError(t, err)
supplyKeeper.SetModuleAccount(ctx, macc)
account := ak.NewAccountWithAddress(ctx, recipient)
ak.SetAccount(ctx, account)
require.True(t, bk.GetAllBalances(ctx, account.GetAddress()).IsZero())
feePool := keeper.GetFeePool(ctx)
feePool.CommunityPool = sdk.NewDecCoinsFromCoins(amount...)
keeper.SetFeePool(ctx, feePool)
tp := testProposal(recipient, amount)
hdlr := NewCommunityPoolSpendProposalHandler(keeper)
require.NoError(t, hdlr(ctx, tp))
balances = bk.GetAllBalances(ctx, recipient)
require.Equal(t, balances, amount)
}
func TestProposalHandlerFailed(t *testing.T) {
ctx, ak, bk, keeper, _, _ := CreateTestInputDefault(t, false, 10)
recipient := delAddr1
account := ak.NewAccountWithAddress(ctx, recipient)
ak.SetAccount(ctx, account)
require.True(t, bk.GetAllBalances(ctx, account.GetAddress()).IsZero())
tp := testProposal(recipient, amount)
hdlr := NewCommunityPoolSpendProposalHandler(keeper)
require.Error(t, hdlr(ctx, tp))
balances := bk.GetAllBalances(ctx, recipient)
require.True(t, balances.IsZero())
}