Skip to content

Commit

Permalink
fix test
Browse files Browse the repository at this point in the history
  • Loading branch information
RogerKSI committed Sep 13, 2023
1 parent 1ab3785 commit 871ec94
Show file tree
Hide file tree
Showing 8 changed files with 473 additions and 420 deletions.
548 changes: 274 additions & 274 deletions x/globalfee/feechecker/feechecker_test.go

Large diffs are not rendered by default.

70 changes: 0 additions & 70 deletions x/globalfee/genesis_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,10 @@ package globalfee

import (
"testing"
"time"

dbm "github.com/cometbft/cometbft-db"
"github.com/cometbft/cometbft/libs/log"
tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
"github.com/cosmos/cosmos-sdk/store"
storetypes "github.com/cosmos/cosmos-sdk/store/types"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/bandprotocol/chain/v2/x/globalfee/keeper"
"github.com/bandprotocol/chain/v2/x/globalfee/types"
)

func TestDefaultGenesis(t *testing.T) {
Expand Down Expand Up @@ -73,61 +61,3 @@ func TestValidateGenesis(t *testing.T) {
})
}
}

func TestInitExportGenesis(t *testing.T) {
specs := map[string]struct {
src string
exp types.GenesisState
}{
"single fee": {
src: `{"params":{"minimum_gas_prices":[{"denom":"ALX", "amount":"1"}]}}`,
exp: types.GenesisState{
Params: types.Params{MinimumGasPrices: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.NewInt(1)))},
},
},
"multiple fee options": {
src: `{"params":{"minimum_gas_prices":[{"denom":"ALX", "amount":"1"}, {"denom":"BLX", "amount":"0.001"}]}}`,
exp: types.GenesisState{
Params: types.Params{MinimumGasPrices: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.NewInt(1)),
sdk.NewDecCoinFromDec("BLX", sdk.NewDecWithPrec(1, 3)))},
},
},
"no fee set": {
src: `{"params":{}}`,
exp: types.GenesisState{Params: types.Params{MinimumGasPrices: sdk.DecCoins{}}},
},
}
for name, spec := range specs {
t.Run(name, func(t *testing.T) {
ctx, encCfg, keeper := setupTestStore(t)
m := NewAppModule(keeper)
m.InitGenesis(ctx, encCfg.Codec, []byte(spec.src))
gotJSON := m.ExportGenesis(ctx, encCfg.Codec)
var got types.GenesisState
require.NoError(t, encCfg.Codec.UnmarshalJSON(gotJSON, &got))
assert.Equal(t, spec.exp, got, string(gotJSON))
})
}
}

func setupTestStore(t *testing.T) (sdk.Context, moduletestutil.TestEncodingConfig, keeper.Keeper) {
db := dbm.NewMemDB()
ms := store.NewCommitMultiStore(db)
encCfg := moduletestutil.MakeTestEncodingConfig()
storeKey := sdk.NewKVStoreKey(types.StoreKey)
ms.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db)
require.NoError(t, ms.LoadLatestVersion())

globalfeeKeeper := keeper.NewKeeper(
encCfg.Codec,
storeKey,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)

ctx := sdk.NewContext(ms, tmproto.Header{
Height: 1234567,
Time: time.Date(2020, time.April, 22, 12, 0, 0, 0, time.UTC),
}, false, log.NewNopLogger())

return ctx, encCfg, globalfeeKeeper
}
20 changes: 20 additions & 0 deletions x/globalfee/keeper/genesis.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package keeper

import (
sdk "github.com/cosmos/cosmos-sdk/types"

"github.com/bandprotocol/chain/v2/x/globalfee/types"
)

// InitGenesis new globalfee genesis
func (keeper Keeper) InitGenesis(ctx sdk.Context, data *types.GenesisState) {
if err := keeper.SetParams(ctx, data.Params); err != nil {
panic(err)
}
}

// ExportGenesis returns a GenesisState for a given context.
func (keeper Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState {
params := keeper.GetParams(ctx)
return types.NewGenesisState(params)
}
81 changes: 81 additions & 0 deletions x/globalfee/keeper/genesis_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package keeper_test

import (
"testing"

"github.com/cosmos/cosmos-sdk/codec"
storetypes "github.com/cosmos/cosmos-sdk/store/types"
"github.com/cosmos/cosmos-sdk/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/stretchr/testify/suite"

"github.com/bandprotocol/chain/v2/x/globalfee"
"github.com/bandprotocol/chain/v2/x/globalfee/keeper"
"github.com/bandprotocol/chain/v2/x/globalfee/types"
)

type GenesisTestSuite struct {
suite.Suite

sdkCtx sdk.Context
keeper keeper.Keeper
cdc codec.BinaryCodec
key *storetypes.KVStoreKey
}

func TestGenesisTestSuite(t *testing.T) {
suite.Run(t, new(GenesisTestSuite))
}

func (s *GenesisTestSuite) SetupTest() {
key := sdk.NewKVStoreKey(types.StoreKey)
testCtx := testutil.DefaultContextWithDB(s.T(), key, sdk.NewTransientStoreKey("transient_test"))
encCfg := moduletestutil.MakeTestEncodingConfig(globalfee.AppModuleBasic{})

// gomock initializations
s.cdc = codec.NewProtoCodec(encCfg.InterfaceRegistry)
s.sdkCtx = testCtx.Ctx
s.key = key

s.keeper = keeper.NewKeeper(s.cdc, key, authtypes.NewModuleAddress(govtypes.ModuleName).String())
}

func (s *GenesisTestSuite) TestImportExportGenesis() {
specs := map[string]struct {
src string
exp types.GenesisState
}{
"single fee": {
src: `{"params":{"minimum_gas_prices":[{"denom":"ALX", "amount":"1"}]}}`,
exp: types.GenesisState{
Params: types.Params{MinimumGasPrices: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.NewInt(1)))},
},
},
"multiple fee options": {
src: `{"params":{"minimum_gas_prices":[{"denom":"ALX", "amount":"1"}, {"denom":"BLX", "amount":"0.001"}]}}`,
exp: types.GenesisState{
Params: types.Params{MinimumGasPrices: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.NewInt(1)),
sdk.NewDecCoinFromDec("BLX", sdk.NewDecWithPrec(1, 3)))},
},
},
"no fee set": {
src: `{"params":{}}`,
exp: types.GenesisState{Params: types.Params{MinimumGasPrices: nil}},
},
}
for name, spec := range specs {
s.Run(name, func() {
genesisState := &spec.exp
s.keeper.InitGenesis(s.sdkCtx, genesisState)

params := s.keeper.GetParams(s.sdkCtx)
s.Require().Equal(genesisState.Params, params)

genesisState2 := s.keeper.ExportGenesis(s.sdkCtx)
s.Require().Equal(genesisState, genesisState2)
})
}
}
6 changes: 2 additions & 4 deletions x/globalfee/keeper/grpc_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,9 @@ type Querier struct {
}

// Params return parameters of globalfee module
func (q Querier) Params(
stdCtx context.Context,
_ *types.QueryParamsRequest,
) (*types.QueryParamsResponse, error) {
func (q Querier) Params(stdCtx context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) {
ctx := sdk.UnwrapSDKContext(stdCtx)

return &types.QueryParamsResponse{
Params: q.GetParams(ctx),
}, nil
Expand Down
124 changes: 69 additions & 55 deletions x/globalfee/keeper/grpc_query_test.go
Original file line number Diff line number Diff line change
@@ -1,59 +1,73 @@
package keeper
package keeper_test

// import (
// "testing"
import (
"testing"

// sdk "github.com/cosmos/cosmos-sdk/types"
// paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
// "github.com/stretchr/testify/assert"
// "github.com/stretchr/testify/require"
"github.com/cosmos/cosmos-sdk/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

// "github.com/bandprotocol/chain/v2/x/globalfee/types"
// )
"github.com/bandprotocol/chain/v2/x/globalfee/keeper"
"github.com/bandprotocol/chain/v2/x/globalfee/types"
)

// func TestQueryMinimumGasPrices(t *testing.T) {
// specs := map[string]struct {
// setupStore func(ctx sdk.Context, s paramtypes.Subspace)
// expMin sdk.DecCoins
// }{
// "one coin": {
// setupStore: func(ctx sdk.Context, s paramtypes.Subspace) {
// s.SetParamSet(ctx, &types.Params{
// MinimumGasPrices: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.OneInt())),
// })
// },
// expMin: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.OneInt())),
// },
// "multiple coins": {
// setupStore: func(ctx sdk.Context, s paramtypes.Subspace) {
// s.SetParamSet(ctx, &types.Params{
// MinimumGasPrices: sdk.NewDecCoins(
// sdk.NewDecCoin("ALX", sdk.OneInt()),
// sdk.NewDecCoin("BLX", sdk.NewInt(2)),
// ),
// })
// },
// expMin: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.OneInt()), sdk.NewDecCoin("BLX", sdk.NewInt(2))),
// },
// "no min gas price set": {
// setupStore: func(ctx sdk.Context, s paramtypes.Subspace) {
// s.SetParamSet(ctx, &types.Params{})
// },
// },
// "no param set": {
// setupStore: func(ctx sdk.Context, s paramtypes.Subspace) {
// },
// },
// }
// for name, spec := range specs {
// t.Run(name, func(t *testing.T) {
// ctx, _, subspace := setupTestStore(t)
// spec.setupStore(ctx, subspace)
// q := NewGrpcQuerier(subspace)
// gotResp, gotErr := q.MinimumGasPrices(sdk.WrapSDKContext(ctx), nil)
// require.NoError(t, gotErr)
// require.NotNil(t, gotResp)
// assert.Equal(t, spec.expMin, gotResp.MinimumGasPrices)
// })
// }
// }
func TestQueryParams(t *testing.T) {
specs := map[string]struct {
setupStore func(ctx sdk.Context, k keeper.Keeper)
expMin sdk.DecCoins
}{
"one coin": {
setupStore: func(ctx sdk.Context, k keeper.Keeper) {
k.SetParams(ctx, types.Params{
MinimumGasPrices: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.OneInt())),
})
},
expMin: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.OneInt())),
},
"multiple coins": {
setupStore: func(ctx sdk.Context, k keeper.Keeper) {
k.SetParams(ctx, types.Params{
MinimumGasPrices: sdk.NewDecCoins(
sdk.NewDecCoin("ALX", sdk.OneInt()),
sdk.NewDecCoin("BLX", sdk.NewInt(2)),
),
})
},
expMin: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.OneInt()), sdk.NewDecCoin("BLX", sdk.NewInt(2))),
},
"no min gas price set": {
setupStore: func(ctx sdk.Context, k keeper.Keeper) {
k.SetParams(ctx, types.Params{})
},
},
"no param set": {
setupStore: func(ctx sdk.Context, k keeper.Keeper) {
},
},
}
for name, spec := range specs {
t.Run(name, func(t *testing.T) {
encCfg := moduletestutil.MakeTestEncodingConfig()
key := sdk.NewKVStoreKey(types.StoreKey)
ctx := testutil.DefaultContextWithDB(t, key, sdk.NewTransientStoreKey("transient_test")).Ctx

k := keeper.NewKeeper(
encCfg.Codec,
key,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)

q := keeper.Querier{Keeper: k}
spec.setupStore(ctx, k)
gotResp, gotErr := q.Params(sdk.WrapSDKContext(ctx), nil)

require.NoError(t, gotErr)
require.NotNil(t, gotResp)
assert.Equal(t, spec.expMin, gotResp.Params.MinimumGasPrices)
})
}
}
Loading

0 comments on commit 871ec94

Please sign in to comment.