github.com/Finschia/finschia-sdk@v0.48.1/x/evidence/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/types/query"
     8  	"github.com/Finschia/finschia-sdk/x/evidence/exported"
     9  	"github.com/Finschia/finschia-sdk/x/evidence/types"
    10  
    11  	ostbytes "github.com/Finschia/ostracon/libs/bytes"
    12  )
    13  
    14  func (suite *KeeperTestSuite) TestQueryEvidence() {
    15  	var (
    16  		req      *types.QueryEvidenceRequest
    17  		evidence []exported.Evidence
    18  	)
    19  
    20  	testCases := []struct {
    21  		msg       string
    22  		malleate  func()
    23  		expPass   bool
    24  		posttests func(res *types.QueryEvidenceResponse)
    25  	}{
    26  		{
    27  			"empty request",
    28  			func() {
    29  				req = &types.QueryEvidenceRequest{}
    30  			},
    31  			false,
    32  			func(res *types.QueryEvidenceResponse) {},
    33  		},
    34  		{
    35  			"invalid request with empty evidence hash",
    36  			func() {
    37  				req = &types.QueryEvidenceRequest{EvidenceHash: ostbytes.HexBytes{}}
    38  			},
    39  			false,
    40  			func(res *types.QueryEvidenceResponse) {},
    41  		},
    42  		{
    43  			"success",
    44  			func() {
    45  				numEvidence := 100
    46  				evidence = suite.populateEvidence(suite.ctx, numEvidence)
    47  				req = types.NewQueryEvidenceRequest(evidence[0].Hash())
    48  			},
    49  			true,
    50  			func(res *types.QueryEvidenceResponse) {
    51  				var evi exported.Evidence
    52  				err := suite.app.InterfaceRegistry().UnpackAny(res.Evidence, &evi)
    53  				suite.Require().NoError(err)
    54  				suite.Require().NotNil(evi)
    55  				suite.Require().Equal(evi, evidence[0])
    56  			},
    57  		},
    58  	}
    59  
    60  	for _, tc := range testCases {
    61  		suite.Run(fmt.Sprintf("Case %s", tc.msg), func() {
    62  			suite.SetupTest()
    63  
    64  			tc.malleate()
    65  			ctx := sdk.WrapSDKContext(suite.ctx)
    66  
    67  			res, err := suite.queryClient.Evidence(ctx, req)
    68  
    69  			if tc.expPass {
    70  				suite.Require().NoError(err)
    71  				suite.Require().NotNil(res)
    72  			} else {
    73  				suite.Require().Error(err)
    74  				suite.Require().Nil(res)
    75  			}
    76  
    77  			tc.posttests(res)
    78  		})
    79  	}
    80  }
    81  
    82  func (suite *KeeperTestSuite) TestQueryAllEvidence() {
    83  	var req *types.QueryAllEvidenceRequest
    84  
    85  	testCases := []struct {
    86  		msg       string
    87  		malleate  func()
    88  		expPass   bool
    89  		posttests func(res *types.QueryAllEvidenceResponse)
    90  	}{
    91  		{
    92  			"success without evidence",
    93  			func() {
    94  				req = &types.QueryAllEvidenceRequest{}
    95  			},
    96  			true,
    97  			func(res *types.QueryAllEvidenceResponse) {
    98  				suite.Require().Empty(res.Evidence)
    99  			},
   100  		},
   101  		{
   102  			"success",
   103  			func() {
   104  				numEvidence := 100
   105  				_ = suite.populateEvidence(suite.ctx, numEvidence)
   106  				pageReq := &query.PageRequest{
   107  					Key:        nil,
   108  					Limit:      50,
   109  					CountTotal: false,
   110  				}
   111  				req = types.NewQueryAllEvidenceRequest(pageReq)
   112  			},
   113  			true,
   114  			func(res *types.QueryAllEvidenceResponse) {
   115  				suite.Equal(len(res.Evidence), 50)
   116  				suite.NotNil(res.Pagination.NextKey)
   117  			},
   118  		},
   119  	}
   120  
   121  	for _, tc := range testCases {
   122  		suite.Run(fmt.Sprintf("Case %s", tc.msg), func() {
   123  			suite.SetupTest()
   124  
   125  			tc.malleate()
   126  			ctx := sdk.WrapSDKContext(suite.ctx)
   127  
   128  			res, err := suite.queryClient.AllEvidence(ctx, req)
   129  
   130  			if tc.expPass {
   131  				suite.Require().NoError(err)
   132  				suite.Require().NotNil(res)
   133  			} else {
   134  				suite.Require().Error(err)
   135  				suite.Require().Nil(res)
   136  			}
   137  
   138  			tc.posttests(res)
   139  		})
   140  	}
   141  }