github.com/Finschia/finschia-sdk@v0.48.1/x/params/keeper/grpc_query_test.go (about)

     1  package keeper_test
     2  
     3  import (
     4  	"fmt"
     5  
     6  	sdk "github.com/Finschia/finschia-sdk/types"
     7  	"github.com/Finschia/finschia-sdk/x/params/types"
     8  	"github.com/Finschia/finschia-sdk/x/params/types/proposal"
     9  )
    10  
    11  func (suite *KeeperTestSuite) TestGRPCQueryParams() {
    12  	var (
    13  		req      *proposal.QueryParamsRequest
    14  		expValue string
    15  		space    types.Subspace
    16  	)
    17  	key := []byte("key")
    18  
    19  	testCases := []struct {
    20  		msg      string
    21  		malleate func()
    22  		expPass  bool
    23  	}{
    24  		{
    25  			"empty request",
    26  			func() {
    27  				req = &proposal.QueryParamsRequest{}
    28  			},
    29  			false,
    30  		},
    31  		{
    32  			"invalid request with subspace not found",
    33  			func() {
    34  				req = &proposal.QueryParamsRequest{Subspace: "test"}
    35  			},
    36  			false,
    37  		},
    38  		{
    39  			"invalid request with subspace and key not found",
    40  			func() {
    41  				req = &proposal.QueryParamsRequest{Subspace: "test", Key: "key"}
    42  			},
    43  			false,
    44  		},
    45  		{
    46  			"success",
    47  			func() {
    48  				space = suite.app.ParamsKeeper.Subspace("test").
    49  					WithKeyTable(types.NewKeyTable(types.NewParamSetPair(key, paramJSON{}, validateNoOp)))
    50  				req = &proposal.QueryParamsRequest{Subspace: "test", Key: "key"}
    51  				expValue = ""
    52  			},
    53  			true,
    54  		},
    55  		{
    56  			"update value success",
    57  			func() {
    58  				err := space.Update(suite.ctx, key, []byte(`{"param1":"10241024"}`))
    59  				suite.Require().NoError(err)
    60  				req = &proposal.QueryParamsRequest{Subspace: "test", Key: "key"}
    61  				expValue = `{"param1":"10241024"}`
    62  			},
    63  			true,
    64  		},
    65  	}
    66  
    67  	suite.SetupTest()
    68  	ctx := sdk.WrapSDKContext(suite.ctx)
    69  
    70  	for _, tc := range testCases {
    71  		suite.Run(fmt.Sprintf("Case %s", tc.msg), func() {
    72  			tc.malleate()
    73  
    74  			res, err := suite.queryClient.Params(ctx, req)
    75  
    76  			if tc.expPass {
    77  				suite.Require().NoError(err)
    78  				suite.Require().NotNil(res)
    79  				suite.Require().Equal(expValue, res.Param.Value)
    80  			} else {
    81  				suite.Require().Error(err)
    82  				suite.Require().Nil(res)
    83  			}
    84  		})
    85  	}
    86  }