github.com/Finschia/finschia-sdk@v0.48.1/x/mint/client/testutil/suite.go (about)

     1  package testutil
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	"github.com/stretchr/testify/suite"
     8  
     9  	ostcli "github.com/Finschia/ostracon/libs/cli"
    10  
    11  	"github.com/Finschia/finschia-sdk/client/flags"
    12  	clitestutil "github.com/Finschia/finschia-sdk/testutil/cli"
    13  	"github.com/Finschia/finschia-sdk/testutil/network"
    14  	sdk "github.com/Finschia/finschia-sdk/types"
    15  	"github.com/Finschia/finschia-sdk/x/mint/client/cli"
    16  	minttypes "github.com/Finschia/finschia-sdk/x/mint/types"
    17  )
    18  
    19  type IntegrationTestSuite struct {
    20  	suite.Suite
    21  
    22  	cfg     network.Config
    23  	network *network.Network
    24  }
    25  
    26  func NewIntegrationTestSuite(cfg network.Config) *IntegrationTestSuite {
    27  	return &IntegrationTestSuite{cfg: cfg}
    28  }
    29  
    30  func (s *IntegrationTestSuite) SetupSuite() {
    31  	s.T().Log("setting up integration test suite")
    32  
    33  	genesisState := s.cfg.GenesisState
    34  
    35  	var mintData minttypes.GenesisState
    36  	s.Require().NoError(s.cfg.Codec.UnmarshalJSON(genesisState[minttypes.ModuleName], &mintData))
    37  
    38  	inflation := sdk.MustNewDecFromStr("1.0")
    39  	mintData.Minter.Inflation = inflation
    40  	mintData.Params.InflationMin = inflation
    41  	mintData.Params.InflationMax = inflation
    42  
    43  	mintDataBz, err := s.cfg.Codec.MarshalJSON(&mintData)
    44  	s.Require().NoError(err)
    45  	genesisState[minttypes.ModuleName] = mintDataBz
    46  	s.cfg.GenesisState = genesisState
    47  
    48  	s.network = network.New(s.T(), s.cfg)
    49  
    50  	_, err = s.network.WaitForHeight(1)
    51  	s.Require().NoError(err)
    52  }
    53  
    54  func (s *IntegrationTestSuite) TearDownSuite() {
    55  	s.T().Log("tearing down integration test suite")
    56  	s.network.Cleanup()
    57  }
    58  
    59  func (s *IntegrationTestSuite) TestGetCmdQueryParams() {
    60  	val := s.network.Validators[0]
    61  
    62  	testCases := []struct {
    63  		name           string
    64  		args           []string
    65  		expectedOutput string
    66  	}{
    67  		{
    68  			"json output",
    69  			[]string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=json", ostcli.OutputFlag)},
    70  			`{"mint_denom":"stake","inflation_rate_change":"0.130000000000000000","inflation_max":"1.000000000000000000","inflation_min":"1.000000000000000000","goal_bonded":"0.670000000000000000","blocks_per_year":"6311520"}`,
    71  		},
    72  		{
    73  			"text output",
    74  			[]string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=text", ostcli.OutputFlag)},
    75  			`blocks_per_year: "6311520"
    76  goal_bonded: "0.670000000000000000"
    77  inflation_max: "1.000000000000000000"
    78  inflation_min: "1.000000000000000000"
    79  inflation_rate_change: "0.130000000000000000"
    80  mint_denom: stake`,
    81  		},
    82  	}
    83  
    84  	for _, tc := range testCases {
    85  		tc := tc
    86  
    87  		s.Run(tc.name, func() {
    88  			cmd := cli.GetCmdQueryParams()
    89  			clientCtx := val.ClientCtx
    90  
    91  			out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
    92  			s.Require().NoError(err)
    93  			s.Require().Equal(tc.expectedOutput, strings.TrimSpace(out.String()))
    94  		})
    95  	}
    96  }
    97  
    98  func (s *IntegrationTestSuite) TestGetCmdQueryInflation() {
    99  	val := s.network.Validators[0]
   100  
   101  	testCases := []struct {
   102  		name           string
   103  		args           []string
   104  		expectedOutput string
   105  	}{
   106  		{
   107  			"json output",
   108  			[]string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=json", ostcli.OutputFlag)},
   109  			`1.000000000000000000`,
   110  		},
   111  		{
   112  			"text output",
   113  			[]string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=text", ostcli.OutputFlag)},
   114  			`1.000000000000000000`,
   115  		},
   116  	}
   117  
   118  	for _, tc := range testCases {
   119  		tc := tc
   120  
   121  		s.Run(tc.name, func() {
   122  			cmd := cli.GetCmdQueryInflation()
   123  			clientCtx := val.ClientCtx
   124  
   125  			out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
   126  			s.Require().NoError(err)
   127  			s.Require().Equal(tc.expectedOutput, strings.TrimSpace(out.String()))
   128  		})
   129  	}
   130  }
   131  
   132  func (s *IntegrationTestSuite) TestGetCmdQueryAnnualProvisions() {
   133  	val := s.network.Validators[0]
   134  
   135  	testCases := []struct {
   136  		name           string
   137  		args           []string
   138  		expectedOutput string
   139  	}{
   140  		{
   141  			"json output",
   142  			[]string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=json", ostcli.OutputFlag)},
   143  			`500000000.000000000000000000`,
   144  		},
   145  		{
   146  			"text output",
   147  			[]string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=text", ostcli.OutputFlag)},
   148  			`500000000.000000000000000000`,
   149  		},
   150  	}
   151  
   152  	for _, tc := range testCases {
   153  		tc := tc
   154  
   155  		s.Run(tc.name, func() {
   156  			cmd := cli.GetCmdQueryAnnualProvisions()
   157  			clientCtx := val.ClientCtx
   158  
   159  			out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
   160  			s.Require().NoError(err)
   161  			s.Require().Equal(tc.expectedOutput, strings.TrimSpace(out.String()))
   162  		})
   163  	}
   164  }