143 lines
3.1 KiB
Go
143 lines
3.1 KiB
Go
package keeper_test
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/cosmos/cosmos-sdk/types/query"
|
|
"github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer/types"
|
|
)
|
|
|
|
func (suite *KeeperTestSuite) TestQueryDenomTrace() {
|
|
var (
|
|
req *types.QueryDenomTraceRequest
|
|
expTrace types.DenomTrace
|
|
)
|
|
|
|
testCases := []struct {
|
|
msg string
|
|
malleate func()
|
|
expPass bool
|
|
}{
|
|
{
|
|
"invalid hex hash",
|
|
func() {
|
|
req = &types.QueryDenomTraceRequest{
|
|
Hash: "!@#!@#!",
|
|
}
|
|
},
|
|
false,
|
|
},
|
|
{
|
|
"not found denom trace",
|
|
func() {
|
|
expTrace.Path = "transfer/channelToA/transfer/channelToB"
|
|
expTrace.BaseDenom = "uatom"
|
|
req = &types.QueryDenomTraceRequest{
|
|
Hash: expTrace.Hash().String(),
|
|
}
|
|
},
|
|
false,
|
|
},
|
|
{
|
|
"success",
|
|
func() {
|
|
expTrace.Path = "transfer/channelToA/transfer/channelToB"
|
|
expTrace.BaseDenom = "uatom"
|
|
suite.chainA.App.TransferKeeper.SetDenomTrace(suite.chainA.GetContext(), expTrace)
|
|
|
|
req = &types.QueryDenomTraceRequest{
|
|
Hash: expTrace.Hash().String(),
|
|
}
|
|
},
|
|
true,
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
suite.Run(fmt.Sprintf("Case %s", tc.msg), func() {
|
|
suite.SetupTest() // reset
|
|
|
|
tc.malleate()
|
|
ctx := sdk.WrapSDKContext(suite.chainA.GetContext())
|
|
|
|
res, err := suite.queryClient.DenomTrace(ctx, req)
|
|
|
|
if tc.expPass {
|
|
suite.Require().NoError(err)
|
|
suite.Require().NotNil(res)
|
|
suite.Require().Equal(&expTrace, res.DenomTrace)
|
|
} else {
|
|
suite.Require().Error(err)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func (suite *KeeperTestSuite) TestQueryDenomTraces() {
|
|
var (
|
|
req *types.QueryDenomTracesRequest
|
|
expTraces = types.Traces(nil)
|
|
)
|
|
|
|
testCases := []struct {
|
|
msg string
|
|
malleate func()
|
|
expPass bool
|
|
}{
|
|
{
|
|
"empty pagination",
|
|
func() {
|
|
req = &types.QueryDenomTracesRequest{}
|
|
},
|
|
true,
|
|
},
|
|
{
|
|
"success",
|
|
func() {
|
|
expTraces = append(expTraces, types.DenomTrace{Path: "", BaseDenom: "uatom"})
|
|
expTraces = append(expTraces, types.DenomTrace{Path: "transfer/channelToB", BaseDenom: "uatom"})
|
|
expTraces = append(expTraces, types.DenomTrace{Path: "transfer/channelToA/transfer/channelToB", BaseDenom: "uatom"})
|
|
|
|
for _, trace := range expTraces {
|
|
suite.chainA.App.TransferKeeper.SetDenomTrace(suite.chainA.GetContext(), trace)
|
|
}
|
|
|
|
req = &types.QueryDenomTracesRequest{
|
|
Pagination: &query.PageRequest{
|
|
Limit: 5,
|
|
CountTotal: false,
|
|
},
|
|
}
|
|
},
|
|
true,
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
suite.Run(fmt.Sprintf("Case %s", tc.msg), func() {
|
|
suite.SetupTest() // reset
|
|
|
|
tc.malleate()
|
|
ctx := sdk.WrapSDKContext(suite.chainA.GetContext())
|
|
|
|
res, err := suite.queryClient.DenomTraces(ctx, req)
|
|
|
|
if tc.expPass {
|
|
suite.Require().NoError(err)
|
|
suite.Require().NotNil(res)
|
|
suite.Require().Equal(expTraces.Sort(), res.DenomTraces)
|
|
} else {
|
|
suite.Require().Error(err)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func (suite *KeeperTestSuite) TestQueryParams() {
|
|
ctx := sdk.WrapSDKContext(suite.chainA.GetContext())
|
|
expParams := types.DefaultParams()
|
|
res, _ := suite.queryClient.Params(ctx, &types.QueryParamsRequest{})
|
|
suite.Require().Equal(&expParams, res.Params)
|
|
}
|