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 }