forked from cerc-io/laconicd
Prathamesh Musale
0af44b5f17
- Setup integration tests following pattern suggested in cosmos-sdk docs: https://docs.cosmos.network/v0.50/build/building-modules/testing#integration-tests - Add tests for laconic modules query services - Setup a CI workflow to run the integration tests Reviewed-on: deep-stack/laconic2d#11 Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com> Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
211 lines
4.6 KiB
Go
211 lines
4.6 KiB
Go
package keeper_test
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"cosmossdk.io/math"
|
|
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
|
|
integrationTest "git.vdb.to/cerc-io/laconic2d/tests/integration"
|
|
types "git.vdb.to/cerc-io/laconic2d/x/bond"
|
|
)
|
|
|
|
func (kts *KeeperTestSuite) TestGrpcQueryParams() {
|
|
testCases := []struct {
|
|
msg string
|
|
req *types.QueryParamsRequest
|
|
}{
|
|
{
|
|
"fetch params",
|
|
&types.QueryParamsRequest{},
|
|
},
|
|
}
|
|
for _, test := range testCases {
|
|
kts.Run(fmt.Sprintf("Case %s", test.msg), func() {
|
|
resp, err := kts.queryClient.Params(context.Background(), test.req)
|
|
kts.Require().Nil(err)
|
|
kts.Require().Equal(*(resp.Params), types.DefaultParams())
|
|
})
|
|
}
|
|
}
|
|
|
|
func (kts *KeeperTestSuite) TestGrpcQueryBondsList() {
|
|
testCases := []struct {
|
|
msg string
|
|
req *types.QueryGetBondsRequest
|
|
resp *types.QueryGetBondsResponse
|
|
noOfBonds int
|
|
createBonds bool
|
|
}{
|
|
{
|
|
"empty request",
|
|
&types.QueryGetBondsRequest{},
|
|
&types.QueryGetBondsResponse{},
|
|
0,
|
|
false,
|
|
},
|
|
{
|
|
"Get Bonds",
|
|
&types.QueryGetBondsRequest{},
|
|
&types.QueryGetBondsResponse{},
|
|
1,
|
|
true,
|
|
},
|
|
}
|
|
|
|
for _, test := range testCases {
|
|
kts.Run(fmt.Sprintf("Case %s ", test.msg), func() {
|
|
if test.createBonds {
|
|
_, err := kts.createBond()
|
|
kts.Require().NoError(err)
|
|
}
|
|
resp, _ := kts.queryClient.Bonds(context.Background(), test.req)
|
|
kts.Require().Equal(test.noOfBonds, len(resp.GetBonds()))
|
|
})
|
|
}
|
|
}
|
|
|
|
func (kts *KeeperTestSuite) TestGrpcQueryBondByBondId() {
|
|
testCases := []struct {
|
|
msg string
|
|
req *types.QueryGetBondByIdRequest
|
|
createBonds bool
|
|
errResponse bool
|
|
bondId string
|
|
}{
|
|
{
|
|
"empty request",
|
|
&types.QueryGetBondByIdRequest{},
|
|
false,
|
|
true,
|
|
"",
|
|
},
|
|
{
|
|
"Get Bond By ID",
|
|
&types.QueryGetBondByIdRequest{},
|
|
true,
|
|
false,
|
|
"",
|
|
},
|
|
}
|
|
|
|
for _, test := range testCases {
|
|
kts.Run(fmt.Sprintf("Case %s ", test.msg), func() {
|
|
if test.createBonds {
|
|
bond, err := kts.createBond()
|
|
kts.Require().NoError(err)
|
|
test.req.Id = bond.Id
|
|
}
|
|
resp, err := kts.queryClient.GetBondById(context.Background(), test.req)
|
|
if !test.errResponse {
|
|
kts.Require().Nil(err)
|
|
kts.Require().NotNil(resp.GetBond())
|
|
kts.Require().Equal(test.req.Id, resp.GetBond().GetId())
|
|
} else {
|
|
kts.Require().NotNil(err)
|
|
kts.Require().Error(err)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func (kts *KeeperTestSuite) TestGrpcGetBondsByOwner() {
|
|
testCases := []struct {
|
|
msg string
|
|
req *types.QueryGetBondsByOwnerRequest
|
|
noOfBonds int
|
|
createBonds bool
|
|
errResponse bool
|
|
bondId string
|
|
}{
|
|
{
|
|
"empty request",
|
|
&types.QueryGetBondsByOwnerRequest{},
|
|
0,
|
|
false,
|
|
true,
|
|
"",
|
|
},
|
|
{
|
|
"Get Bond By Owner",
|
|
&types.QueryGetBondsByOwnerRequest{},
|
|
1,
|
|
true,
|
|
false,
|
|
"",
|
|
},
|
|
}
|
|
|
|
for _, test := range testCases {
|
|
kts.Run(fmt.Sprintf("Case %s ", test.msg), func() {
|
|
if test.createBonds {
|
|
bond, err := kts.createBond()
|
|
kts.Require().NoError(err)
|
|
test.req.Owner = bond.Owner
|
|
}
|
|
resp, err := kts.queryClient.GetBondsByOwner(context.Background(), test.req)
|
|
if !test.errResponse {
|
|
kts.Require().Nil(err)
|
|
kts.Require().NotNil(resp.GetBonds())
|
|
kts.Require().Equal(test.noOfBonds, len(resp.GetBonds()))
|
|
} else {
|
|
kts.Require().NotNil(err)
|
|
kts.Require().Error(err)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func (kts *KeeperTestSuite) TestGrpcGetModuleBalance() {
|
|
testCases := []struct {
|
|
msg string
|
|
req *types.QueryGetBondModuleBalanceRequest
|
|
noOfBonds int
|
|
createBonds bool
|
|
errResponse bool
|
|
}{
|
|
{
|
|
"empty request",
|
|
&types.QueryGetBondModuleBalanceRequest{},
|
|
0,
|
|
true,
|
|
false,
|
|
},
|
|
}
|
|
|
|
for _, test := range testCases {
|
|
kts.Run(fmt.Sprintf("Case %s ", test.msg), func() {
|
|
if test.createBonds {
|
|
_, err := kts.createBond()
|
|
kts.Require().NoError(err)
|
|
}
|
|
resp, err := kts.queryClient.GetBondsModuleBalance(context.Background(), test.req)
|
|
if !test.errResponse {
|
|
kts.Require().Nil(err)
|
|
kts.Require().NotNil(resp.GetBalance())
|
|
kts.Require().Equal(resp.GetBalance(), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(10))))
|
|
} else {
|
|
kts.Require().NotNil(err)
|
|
kts.Require().Error(err)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func (kts *KeeperTestSuite) createBond() (*types.Bond, error) {
|
|
ctx, k := kts.SdkCtx, kts.BondKeeper
|
|
accCount := 1
|
|
|
|
// Create funded account(s)
|
|
accounts := simtestutil.AddTestAddrs(kts.BankKeeper, integrationTest.BondDenomProvider{}, ctx, accCount, math.NewInt(1000))
|
|
|
|
bond, err := k.CreateBond(ctx, accounts[0], sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(10))))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return bond, nil
|
|
}
|