github.com/Finschia/finschia-sdk@v0.48.1/x/gov/client/cli/parse_test.go (about)

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