0g-chain/x/precisebank/keeper/grpc_query_test.go
drklee3 3853e276a6
feat(x/precisebank): Add query service with TotalFractionalBalances (#1970)
Add query service to precisebank, mostly for e2e test purposes in #1966
Also fix client grpc codec
2024-07-19 10:24:23 -07:00

87 lines
2.0 KiB
Go

package keeper_test
import (
"context"
"strconv"
"testing"
sdkmath "cosmossdk.io/math"
"github.com/cosmos/cosmos-sdk/baseapp"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/stretchr/testify/suite"
"github.com/kava-labs/kava/x/precisebank/keeper"
"github.com/kava-labs/kava/x/precisebank/testutil"
"github.com/kava-labs/kava/x/precisebank/types"
)
type grpcQueryTestSuite struct {
testutil.Suite
queryClient types.QueryClient
}
func (suite *grpcQueryTestSuite) SetupTest() {
suite.Suite.SetupTest()
queryHelper := baseapp.NewQueryServerTestHelper(suite.Ctx, suite.App.InterfaceRegistry())
types.RegisterQueryServer(queryHelper, keeper.NewQueryServerImpl(suite.Keeper))
suite.queryClient = types.NewQueryClient(queryHelper)
}
func TestGrpcQueryTestSuite(t *testing.T) {
suite.Run(t, new(grpcQueryTestSuite))
}
func (suite *grpcQueryTestSuite) TestQueryTotalFractionalBalance() {
testCases := []struct {
name string
giveBalances []sdkmath.Int
}{
{
"empty",
[]sdkmath.Int{},
},
{
"min amount",
[]sdkmath.Int{
types.ConversionFactor().QuoRaw(2),
types.ConversionFactor().QuoRaw(2),
},
},
{
"exceeds conversion factor",
[]sdkmath.Int{
// 4 accounts * 0.5 == 2
types.ConversionFactor().QuoRaw(2),
types.ConversionFactor().QuoRaw(2),
types.ConversionFactor().QuoRaw(2),
types.ConversionFactor().QuoRaw(2),
},
},
}
for _, tc := range testCases {
suite.Run(tc.name, func() {
suite.SetupTest()
total := sdk.NewCoin(types.ExtendedCoinDenom, sdkmath.ZeroInt())
for i, balance := range tc.giveBalances {
addr := sdk.AccAddress([]byte(strconv.Itoa(i)))
suite.Keeper.SetFractionalBalance(suite.Ctx, addr, balance)
total.Amount = total.Amount.Add(balance)
}
res, err := suite.queryClient.TotalFractionalBalances(
context.Background(),
&types.QueryTotalFractionalBalancesRequest{},
)
suite.Require().NoError(err)
suite.Require().Equal(total, res.Total)
})
}
}