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 }