github.com/Finschia/finschia-sdk@v0.48.1/x/params/proposal_handler_test.go (about) 1 package params_test 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/suite" 7 tmproto "github.com/tendermint/tendermint/proto/tendermint/types" 8 9 "github.com/Finschia/finschia-sdk/simapp" 10 sdk "github.com/Finschia/finschia-sdk/types" 11 govtypes "github.com/Finschia/finschia-sdk/x/gov/types" 12 "github.com/Finschia/finschia-sdk/x/params" 13 "github.com/Finschia/finschia-sdk/x/params/types/proposal" 14 stakingtypes "github.com/Finschia/finschia-sdk/x/staking/types" 15 ) 16 17 type HandlerTestSuite struct { 18 suite.Suite 19 20 app *simapp.SimApp 21 ctx sdk.Context 22 govHandler govtypes.Handler 23 } 24 25 func (suite *HandlerTestSuite) SetupTest() { 26 suite.app = simapp.Setup(false) 27 suite.ctx = suite.app.BaseApp.NewContext(false, tmproto.Header{}) 28 suite.govHandler = params.NewParamChangeProposalHandler(suite.app.ParamsKeeper) 29 } 30 31 func TestHandlerTestSuite(t *testing.T) { 32 suite.Run(t, new(HandlerTestSuite)) 33 } 34 35 func testProposal(changes ...proposal.ParamChange) *proposal.ParameterChangeProposal { 36 return proposal.NewParameterChangeProposal("title", "description", changes) 37 } 38 39 func (suite *HandlerTestSuite) TestProposalHandler() { 40 testCases := []struct { 41 name string 42 proposal *proposal.ParameterChangeProposal 43 onHandle func() 44 expErr bool 45 }{ 46 { 47 "all fields", 48 testProposal(proposal.NewParamChange(stakingtypes.ModuleName, string(stakingtypes.KeyMaxValidators), "1")), 49 func() { 50 maxVals := suite.app.StakingKeeper.MaxValidators(suite.ctx) 51 suite.Require().Equal(uint32(1), maxVals) 52 }, 53 false, 54 }, 55 { 56 "invalid type", 57 testProposal(proposal.NewParamChange(stakingtypes.ModuleName, string(stakingtypes.KeyMaxValidators), "-")), 58 func() {}, 59 true, 60 }, 61 { 62 "omit empty fields", 63 testProposal(proposal.ParamChange{ 64 Subspace: govtypes.ModuleName, 65 Key: string(govtypes.ParamStoreKeyDepositParams), 66 Value: `{"min_deposit": [{"denom": "uatom","amount": "64000000"}]}`, 67 }), 68 func() { 69 depositParams := suite.app.GovKeeper.GetDepositParams(suite.ctx) 70 suite.Require().Equal(govtypes.DepositParams{ 71 MinDeposit: sdk.NewCoins(sdk.NewCoin("uatom", sdk.NewInt(64000000))), 72 MaxDepositPeriod: govtypes.DefaultPeriod, 73 }, depositParams) 74 }, 75 false, 76 }, 77 } 78 79 for _, tc := range testCases { 80 tc := tc 81 suite.Run(tc.name, func() { 82 err := suite.govHandler(suite.ctx, tc.proposal) 83 if tc.expErr { 84 suite.Require().Error(err) 85 } else { 86 suite.Require().NoError(err) 87 tc.onHandle() 88 } 89 }) 90 } 91 }