github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/distribution/proposal_handler_test.go (about) 1 package distribution 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 8 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 9 "github.com/fibonacci-chain/fbc/libs/tendermint/crypto/ed25519" 10 govtypes "github.com/fibonacci-chain/fbc/x/gov/types" 11 12 "github.com/fibonacci-chain/fbc/x/distribution/keeper" 13 "github.com/fibonacci-chain/fbc/x/distribution/types" 14 ) 15 16 var ( 17 delPk1 = ed25519.GenPrivKey().PubKey() 18 delAddr1 = sdk.AccAddress(delPk1.Address()) 19 20 amount = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1))) 21 ) 22 23 func testProposal(recipient sdk.AccAddress, amount sdk.Coins) govtypes.Proposal { 24 return govtypes.Proposal{Content: types.NewCommunityPoolSpendProposal( 25 "Test", 26 "description", 27 recipient, 28 amount, 29 )} 30 } 31 32 func TestProposalHandlerPassed(t *testing.T) { 33 ctx, accountKeeper, k, _, supplyKeeper := keeper.CreateTestInputDefault(t, false, 10) 34 recipient := delAddr1 35 36 // add coins to the module account 37 macc := k.GetDistributionAccount(ctx) 38 err := macc.SetCoins(macc.GetCoins().Add(amount...)) 39 require.NoError(t, err) 40 41 supplyKeeper.SetModuleAccount(ctx, macc) 42 43 account := accountKeeper.NewAccountWithAddress(ctx, recipient) 44 require.True(t, account.GetCoins().IsZero()) 45 accountKeeper.SetAccount(ctx, account) 46 47 feePool := k.GetFeePool(ctx) 48 feePool.CommunityPool = sdk.NewCoins(amount...) 49 k.SetFeePool(ctx, feePool) 50 51 tp := testProposal(recipient, amount) 52 hdlr := NewDistributionProposalHandler(k) 53 require.NoError(t, hdlr(ctx, &tp)) 54 require.Equal(t, accountKeeper.GetAccount(ctx, recipient).GetCoins(), amount) 55 } 56 57 func TestProposalHandlerFailed(t *testing.T) { 58 ctx, accountKeeper, k, _, _ := keeper.CreateTestInputDefault(t, false, 10) 59 recipient := delAddr1 60 61 account := accountKeeper.NewAccountWithAddress(ctx, recipient) 62 require.True(t, account.GetCoins().IsZero()) 63 accountKeeper.SetAccount(ctx, account) 64 65 tp := testProposal(recipient, amount) 66 hdlr := NewDistributionProposalHandler(k) 67 require.Error(t, hdlr(ctx, &tp)) 68 require.True(t, accountKeeper.GetAccount(ctx, recipient).GetCoins().IsZero()) 69 }