Skip to content

Commit

Permalink
feat: add gov mint tx for cli
Browse files Browse the repository at this point in the history
  • Loading branch information
dudong2 committed Oct 17, 2022
1 parent c1c4463 commit 47b1285
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 0 deletions.
39 changes: 39 additions & 0 deletions x/foundation/client/cli/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ func NewTxCmd() *cobra.Command {
NewTxCmdLeaveFoundation(),
NewTxCmdGrant(),
NewTxCmdRevoke(),
NewTxCmdGovMint(),
)

return txCmd
Expand Down Expand Up @@ -727,3 +728,41 @@ func NewTxCmdRevoke() *cobra.Command {
flags.AddTxFlagsToCmd(cmd)
return cmd
}

func NewTxCmdGovMint() *cobra.Command {
cmd := &cobra.Command{
Use: "gov-mint [operator] [amount]",
Args: cobra.ExactArgs(2),
Short: "mint coins for foundation",
Long: `mint coins for foundation
`,
RunE: func(cmd *cobra.Command, args []string) error {
operator := args[0]
if err := cmd.Flags().Set(flags.FlagFrom, operator); err != nil {
return err
}

clientCtx, err := client.GetClientTxContext(cmd)
if err != nil {
return err
}

amount, err := sdk.ParseCoinsNormalized(args[1])
if err != nil {
return err
}

msg := foundation.MsgGovMint{
Operator: operator,
Amount: amount,
}
if err := msg.ValidateBasic(); err != nil {
return err
}
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), &msg)
},
}

flags.AddTxFlagsToCmd(cmd)
return cmd
}
55 changes: 55 additions & 0 deletions x/foundation/client/testutil/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -719,3 +719,58 @@ func (s *IntegrationTestSuite) TestNewTxCmdRevoke() {
})
}
}

func (s *IntegrationTestSuite) TestNewTxCmdGovMint() {
val := s.network.Validators[0]
commonArgs := []string{
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address),
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10)))),
}

testCases := map[string]struct {
args []string
valid bool
}{
"valid transaction": {
[]string{
s.operator.String(),
sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.OneInt())).String(),
},
true,
},
"extra args": {
[]string{
s.operator.String(),
foundation.ReceiveFromTreasuryAuthorization{}.MsgTypeURL(),
"extra",
},
false,
},
"not enough args": {
[]string{
s.operator.String(),
},
false,
},
}

for name, tc := range testCases {
tc := tc

s.Run(name, func() {
cmd := cli.NewTxCmdGovMint()
out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, cmd, append(tc.args, commonArgs...))
if !tc.valid {
s.Require().Error(err)
return
}
s.Require().NoError(err)

var res sdk.TxResponse
s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &res), out)
s.Require().EqualValues(0, res.Code, out)
})
}
}

0 comments on commit 47b1285

Please sign in to comment.