github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/staking/client/cli/tx_test.go (about)

     1  package cli
     2  
     3  import (
     4  	"testing"
     5  
     6  	tcmd "github.com/fibonacci-chain/fbc/libs/tendermint/cmd/tendermint/commands"
     7  	cfg "github.com/fibonacci-chain/fbc/libs/tendermint/config"
     8  	"github.com/fibonacci-chain/fbc/libs/tendermint/crypto"
     9  	"github.com/fibonacci-chain/fbc/libs/tendermint/libs/log"
    10  	"github.com/spf13/viper"
    11  	"github.com/stretchr/testify/require"
    12  
    13  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/server"
    14  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    15  )
    16  
    17  func TestPrepareFlagsForTxCreateValidator(t *testing.T) {
    18  	defer server.SetupViper(t)()
    19  	config, err := tcmd.ParseConfig()
    20  	require.Nil(t, err)
    21  	logger := log.NewNopLogger()
    22  	ctx := server.NewContext(config, logger)
    23  
    24  	valPubKey, _ := sdk.GetPubKeyFromBech32(sdk.Bech32PubKeyTypeConsPub, "cosmosvalconspub1zcjduepq7jsrkl9fgqk0wj3ahmfr8pgxj6vakj2wzn656s8pehh0zhv2w5as5gd80a")
    25  
    26  	type args struct {
    27  		config    *cfg.Config
    28  		nodeID    string
    29  		chainID   string
    30  		valPubKey crypto.PubKey
    31  	}
    32  
    33  	type extraParams struct {
    34  		amount                  string
    35  		commissionRate          string
    36  		commissionMaxRate       string
    37  		commissionMaxChangeRate string
    38  		minSelfDelegation       string
    39  	}
    40  
    41  	type testcase struct {
    42  		name string
    43  		args args
    44  	}
    45  
    46  	runTest := func(t *testing.T, tt testcase, params extraParams) {
    47  		PrepareFlagsForTxCreateValidator(tt.args.config, tt.args.nodeID,
    48  			tt.args.chainID, tt.args.valPubKey)
    49  
    50  		require.Equal(t, params.amount, viper.GetString(FlagAmount))
    51  		require.Equal(t, params.commissionRate, viper.GetString(FlagCommissionRate))
    52  		require.Equal(t, params.commissionMaxRate, viper.GetString(FlagCommissionMaxRate))
    53  		require.Equal(t, params.commissionMaxChangeRate, viper.GetString(FlagCommissionMaxChangeRate))
    54  		require.Equal(t, params.minSelfDelegation, viper.GetString(FlagMinSelfDelegation))
    55  	}
    56  
    57  	tests := []testcase{
    58  		{"No parameters", args{ctx.Config, "X", "chainId", valPubKey}},
    59  	}
    60  
    61  	defaultParams := extraParams{
    62  		defaultAmount,
    63  		defaultCommissionRate,
    64  		defaultCommissionMaxRate,
    65  		defaultCommissionMaxChangeRate,
    66  		defaultMinSelfDelegation,
    67  	}
    68  	for _, tt := range tests {
    69  		tt := tt
    70  		t.Run(tt.name, func(t *testing.T) {
    71  			t.Run(tt.name, func(t *testing.T) { runTest(t, tt, defaultParams) })
    72  		})
    73  	}
    74  
    75  	// Override default params
    76  	params := extraParams{"5stake", "1.0", "1.0", "1.0", "1.0"}
    77  	viper.Set(FlagAmount, params.amount)
    78  	viper.Set(FlagCommissionRate, params.commissionRate)
    79  	viper.Set(FlagCommissionMaxRate, params.commissionMaxRate)
    80  	viper.Set(FlagCommissionMaxChangeRate, params.commissionMaxChangeRate)
    81  	viper.Set(FlagMinSelfDelegation, params.minSelfDelegation)
    82  	for _, tt := range tests {
    83  		tt := tt
    84  		t.Run(tt.name, func(t *testing.T) { runTest(t, tt, params) })
    85  	}
    86  }