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

     1  package cli
     2  
     3  import (
     4  	"io/ioutil"
     5  	"testing"
     6  
     7  	"github.com/spf13/viper"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestParseSubmitProposalFlags(t *testing.T) {
    12  	okJSON, err := ioutil.TempFile("", "proposal")
    13  	require.Nil(t, err, "unexpected error")
    14  	okJSON.WriteString(`
    15  {
    16    "title": "Test Proposal",
    17    "description": "My awesome proposal",
    18    "type": "Text",
    19    "deposit": "1000test"
    20  }
    21  `)
    22  
    23  	badJSON, err := ioutil.TempFile("", "proposal")
    24  	require.Nil(t, err, "unexpected error")
    25  	badJSON.WriteString("bad json")
    26  
    27  	// nonexistent json
    28  	viper.Set(FlagProposal, "fileDoesNotExist")
    29  	_, err = parseSubmitProposalFlags()
    30  	require.Error(t, err)
    31  
    32  	// invalid json
    33  	viper.Set(FlagProposal, badJSON.Name())
    34  	_, err = parseSubmitProposalFlags()
    35  	require.Error(t, err)
    36  
    37  	// ok json
    38  	viper.Set(FlagProposal, okJSON.Name())
    39  	proposal1, err := parseSubmitProposalFlags()
    40  	require.Nil(t, err, "unexpected error")
    41  	require.Equal(t, "Test Proposal", proposal1.Title)
    42  	require.Equal(t, "My awesome proposal", proposal1.Description)
    43  	require.Equal(t, "Text", proposal1.Type)
    44  	require.Equal(t, "1000test", proposal1.Deposit)
    45  
    46  	// flags that can't be used with --proposal
    47  	for _, incompatibleFlag := range ProposalFlags {
    48  		viper.Set(incompatibleFlag, "some value")
    49  		_, err := parseSubmitProposalFlags()
    50  		require.Error(t, err)
    51  		viper.Set(incompatibleFlag, "")
    52  	}
    53  
    54  	// no --proposal, only flags
    55  	viper.Set(FlagProposal, "")
    56  	viper.Set(FlagTitle, proposal1.Title)
    57  	viper.Set(FlagDescription, proposal1.Description)
    58  	viper.Set(flagProposalType, proposal1.Type)
    59  	viper.Set(FlagDeposit, proposal1.Deposit)
    60  	proposal2, err := parseSubmitProposalFlags()
    61  	require.Nil(t, err, "unexpected error")
    62  	require.Equal(t, proposal1.Title, proposal2.Title)
    63  	require.Equal(t, proposal1.Description, proposal2.Description)
    64  	require.Equal(t, proposal1.Type, proposal2.Type)
    65  	require.Equal(t, proposal1.Deposit, proposal2.Deposit)
    66  
    67  	err = okJSON.Close()
    68  	require.Nil(t, err, "unexpected error")
    69  	err = badJSON.Close()
    70  	require.Nil(t, err, "unexpected error")
    71  }