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  }