github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/distribution/proposal_handler_distr_proposal_test.go (about) 1 package distribution 2 3 import ( 4 "testing" 5 6 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 7 tmtypes "github.com/fibonacci-chain/fbc/libs/tendermint/types" 8 "github.com/fibonacci-chain/fbc/x/distribution/keeper" 9 "github.com/fibonacci-chain/fbc/x/distribution/types" 10 govtypes "github.com/fibonacci-chain/fbc/x/gov/types" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func makeChangeDistributionTypeProposal(distrType uint32) govtypes.Proposal { 15 return govtypes.Proposal{Content: types.NewChangeDistributionTypeProposal( 16 "Test", 17 "description", 18 distrType, 19 )} 20 } 21 22 func TestChangeDistributionTypeProposalHandlerPassed(t *testing.T) { 23 ctx, _, k, _, _ := keeper.CreateTestInputDefault(t, false, 10) 24 tmtypes.UnittestOnlySetMilestoneVenus2Height(-1) 25 //init status, distribution off chain 26 queryDistrType := k.GetDistributionType(ctx) 27 require.Equal(t, queryDistrType, types.DistributionTypeOffChain) 28 29 //set same type 30 proposal := makeChangeDistributionTypeProposal(types.DistributionTypeOffChain) 31 hdlr := NewDistributionProposalHandler(k) 32 require.NoError(t, hdlr(ctx, &proposal)) 33 queryDistrType = k.GetDistributionType(ctx) 34 require.Equal(t, queryDistrType, types.DistributionTypeOffChain) 35 36 //set diff type, first 37 proposal = makeChangeDistributionTypeProposal(types.DistributionTypeOnChain) 38 hdlr = NewDistributionProposalHandler(k) 39 require.NoError(t, hdlr(ctx, &proposal)) 40 queryDistrType = k.GetDistributionType(ctx) 41 require.Equal(t, queryDistrType, types.DistributionTypeOnChain) 42 43 //set diff type, second 44 proposal = makeChangeDistributionTypeProposal(types.DistributionTypeOffChain) 45 hdlr = NewDistributionProposalHandler(k) 46 require.NoError(t, hdlr(ctx, &proposal)) 47 queryDistrType = k.GetDistributionType(ctx) 48 require.Equal(t, queryDistrType, types.DistributionTypeOffChain) 49 50 //set diff type, third 51 proposal = makeChangeDistributionTypeProposal(types.DistributionTypeOnChain) 52 hdlr = NewDistributionProposalHandler(k) 53 require.NoError(t, hdlr(ctx, &proposal)) 54 queryDistrType = k.GetDistributionType(ctx) 55 require.Equal(t, queryDistrType, types.DistributionTypeOnChain) 56 57 //set same type 58 proposal = makeChangeDistributionTypeProposal(types.DistributionTypeOnChain) 59 hdlr = NewDistributionProposalHandler(k) 60 require.NoError(t, hdlr(ctx, &proposal)) 61 queryDistrType = k.GetDistributionType(ctx) 62 require.Equal(t, queryDistrType, types.DistributionTypeOnChain) 63 } 64 65 func makeRewardTruncatePrecisionProposal(precision int64) govtypes.Proposal { 66 return govtypes.Proposal{Content: types.NewRewardTruncatePrecisionProposal( 67 "Test", 68 "description", 69 precision, 70 )} 71 } 72 73 func (suite *HandlerSuite) TestRewardTruncatePrecisionProposal() { 74 testCases := []struct { 75 title string 76 venusHeight int64 77 percision int64 78 expectPercison int64 79 error sdk.Error 80 }{ 81 { 82 "ok", -1, 0, 0, sdk.Error(nil), 83 }, 84 { 85 "ok", -1, 1, 1, sdk.Error(nil), 86 }, 87 { 88 "error", 0, 0, 0, types.ErrUnknownDistributionCommunityPoolProposaType(), 89 }, 90 { 91 "error", 0, 1, 0, types.ErrUnknownDistributionCommunityPoolProposaType(), 92 }, 93 } 94 95 for _, tc := range testCases { 96 suite.Run(tc.title, func() { 97 ctx, _, dk, _, _ := keeper.CreateTestInputDefault(suite.T(), false, 10) 98 require.Equal(suite.T(), int64(0), dk.GetRewardTruncatePrecision(ctx)) 99 handler := NewDistributionProposalHandler(dk) 100 tmtypes.UnittestOnlySetMilestoneVenus2Height(tc.venusHeight) 101 proposal := makeRewardTruncatePrecisionProposal(tc.percision) 102 err := handler(ctx, &proposal) 103 require.Equal(suite.T(), tc.error, err) 104 require.Equal(suite.T(), tc.expectPercison, dk.GetRewardTruncatePrecision(ctx)) 105 }) 106 } 107 }