github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/distribution/msg_convert_test.go (about)

     1  package distribution
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     8  	tmtypes "github.com/fibonacci-chain/fbc/libs/tendermint/types"
     9  	"github.com/fibonacci-chain/fbc/x/distribution/types"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func testMustAccAddressFromBech32(addr string) sdk.AccAddress {
    14  	re, err := sdk.AccAddressFromBech32(addr)
    15  	if err != nil {
    16  		panic(err)
    17  	}
    18  	return re
    19  }
    20  
    21  func TestConvertWithdrawDelegatorAllRewardsMsg(t *testing.T) {
    22  	addr, err := sdk.AccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9")
    23  	require.NoError(t, err)
    24  
    25  	tmtypes.UnittestOnlySetMilestoneVenus2Height(-1)
    26  	defer func() {
    27  		tmtypes.UnittestOnlySetMilestoneVenus2Height(0)
    28  	}()
    29  
    30  	testcases := []struct {
    31  		msgstr  string
    32  		res     types.MsgWithdrawDelegatorAllRewards
    33  		fnCheck func(msg sdk.Msg, err error, res types.MsgWithdrawDelegatorAllRewards)
    34  	}{
    35  		{
    36  			msgstr: fmt.Sprintf("{\"delegator_address\": \"%s\"}", addr.String()),
    37  			res:    NewMsgWithdrawDelegatorAllRewards(testMustAccAddressFromBech32(addr.String())),
    38  			fnCheck: func(msg sdk.Msg, err error, res types.MsgWithdrawDelegatorAllRewards) {
    39  				require.NoError(t, err)
    40  				require.Equal(t, msg.(types.MsgWithdrawDelegatorAllRewards), res)
    41  			},
    42  		},
    43  		{
    44  			msgstr: `{"delegator_address": "0xB2910E22Bb23D129C02d122B77B462ceB0E89Db9"}`,
    45  			res:    NewMsgWithdrawDelegatorAllRewards(testMustAccAddressFromBech32("0xB2910E22Bb23D129C02d122B77B462ceB0E89Db9")),
    46  			fnCheck: func(msg sdk.Msg, err error, res types.MsgWithdrawDelegatorAllRewards) {
    47  				require.NoError(t, err)
    48  				require.Equal(t, msg.(types.MsgWithdrawDelegatorAllRewards), res)
    49  			},
    50  		},
    51  		{
    52  			msgstr: `{"delegator_address": "B2910E22Bb23D129C02d122B77B462ceB0E89Db9"}`,
    53  			res:    NewMsgWithdrawDelegatorAllRewards(testMustAccAddressFromBech32("B2910E22Bb23D129C02d122B77B462ceB0E89Db9")),
    54  			fnCheck: func(msg sdk.Msg, err error, res types.MsgWithdrawDelegatorAllRewards) {
    55  				require.NoError(t, err)
    56  				require.Equal(t, msg.(types.MsgWithdrawDelegatorAllRewards), res)
    57  			},
    58  		},
    59  		// error
    60  		{
    61  			msgstr: "123",
    62  			fnCheck: func(msg sdk.Msg, err error, res types.MsgWithdrawDelegatorAllRewards) {
    63  				require.Error(t, err)
    64  				require.Nil(t, msg)
    65  			},
    66  		},
    67  		{
    68  			msgstr: fmt.Sprintf("{\"delegator_address\": \"\"}"),
    69  			fnCheck: func(msg sdk.Msg, err error, res types.MsgWithdrawDelegatorAllRewards) {
    70  				require.Error(t, err)
    71  				require.Nil(t, msg)
    72  			},
    73  		},
    74  		{
    75  			msgstr: fmt.Sprintf("{\"delegator_address\": \"889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E\"}"),
    76  			res:    NewMsgWithdrawDelegatorAllRewards(testMustAccAddressFromBech32("B2910E22Bb23D129C02d122B77B462ceB0E89Db9")),
    77  			fnCheck: func(msg sdk.Msg, err error, res types.MsgWithdrawDelegatorAllRewards) {
    78  				require.Equal(t, ErrCheckSignerFail, err)
    79  				require.Nil(t, msg)
    80  			},
    81  		},
    82  	}
    83  
    84  	for _, ts := range testcases {
    85  		msg, err := ConvertWithdrawDelegatorAllRewardsMsg([]byte(ts.msgstr), ts.res.GetSigners())
    86  		ts.fnCheck(msg, err, ts.res)
    87  	}
    88  }