Merge PR #4882: refactor mint tests
This commit is contained in:
parent
1cf016c9a9
commit
70ba07191d
|
@ -1,95 +0,0 @@
|
|||
// nolint:deadcode unused
|
||||
package keeper
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
abci "github.com/tendermint/tendermint/abci/types"
|
||||
"github.com/tendermint/tendermint/libs/log"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
dbm "github.com/tendermint/tm-db"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
"github.com/cosmos/cosmos-sdk/store"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth"
|
||||
"github.com/cosmos/cosmos-sdk/x/bank"
|
||||
"github.com/cosmos/cosmos-sdk/x/mint/internal/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/params"
|
||||
"github.com/cosmos/cosmos-sdk/x/staking"
|
||||
"github.com/cosmos/cosmos-sdk/x/supply"
|
||||
)
|
||||
|
||||
type testInput struct {
|
||||
ctx sdk.Context
|
||||
cdc *codec.Codec
|
||||
mintKeeper Keeper
|
||||
}
|
||||
|
||||
func newTestInput(t *testing.T) testInput {
|
||||
db := dbm.NewMemDB()
|
||||
|
||||
keyAcc := sdk.NewKVStoreKey(auth.StoreKey)
|
||||
keySupply := sdk.NewKVStoreKey(supply.StoreKey)
|
||||
keyStaking := sdk.NewKVStoreKey(staking.StoreKey)
|
||||
tkeyStaking := sdk.NewTransientStoreKey(staking.TStoreKey)
|
||||
keyParams := sdk.NewKVStoreKey(params.StoreKey)
|
||||
tkeyParams := sdk.NewTransientStoreKey(params.TStoreKey)
|
||||
keyMint := sdk.NewKVStoreKey(types.StoreKey)
|
||||
|
||||
ms := store.NewCommitMultiStore(db)
|
||||
ms.MountStoreWithDB(keyAcc, sdk.StoreTypeIAVL, db)
|
||||
ms.MountStoreWithDB(tkeyStaking, sdk.StoreTypeTransient, nil)
|
||||
ms.MountStoreWithDB(keyStaking, sdk.StoreTypeIAVL, db)
|
||||
ms.MountStoreWithDB(keySupply, sdk.StoreTypeIAVL, db)
|
||||
ms.MountStoreWithDB(keyParams, sdk.StoreTypeIAVL, db)
|
||||
ms.MountStoreWithDB(keyMint, sdk.StoreTypeIAVL, db)
|
||||
ms.MountStoreWithDB(tkeyParams, sdk.StoreTypeTransient, db)
|
||||
err := ms.LoadLatestVersion()
|
||||
require.Nil(t, err)
|
||||
|
||||
ctx := sdk.NewContext(ms, abci.Header{Time: time.Unix(0, 0)}, false, log.NewTMLogger(os.Stdout))
|
||||
|
||||
feeCollectorAcc := supply.NewEmptyModuleAccount(auth.FeeCollectorName)
|
||||
notBondedPool := supply.NewEmptyModuleAccount(staking.NotBondedPoolName, supply.Burner, supply.Staking)
|
||||
bondPool := supply.NewEmptyModuleAccount(staking.BondedPoolName, supply.Burner, supply.Staking)
|
||||
minterAcc := supply.NewEmptyModuleAccount(types.ModuleName, supply.Minter)
|
||||
|
||||
blacklistedAddrs := make(map[string]bool)
|
||||
blacklistedAddrs[feeCollectorAcc.GetAddress().String()] = true
|
||||
blacklistedAddrs[notBondedPool.GetAddress().String()] = true
|
||||
blacklistedAddrs[bondPool.GetAddress().String()] = true
|
||||
blacklistedAddrs[minterAcc.GetAddress().String()] = true
|
||||
|
||||
paramsKeeper := params.NewKeeper(types.ModuleCdc, keyParams, tkeyParams, params.DefaultCodespace)
|
||||
accountKeeper := auth.NewAccountKeeper(types.ModuleCdc, keyAcc, paramsKeeper.Subspace(auth.DefaultParamspace), auth.ProtoBaseAccount)
|
||||
bankKeeper := bank.NewBaseKeeper(accountKeeper, paramsKeeper.Subspace(bank.DefaultParamspace), bank.DefaultCodespace, blacklistedAddrs)
|
||||
maccPerms := map[string][]string{
|
||||
auth.FeeCollectorName: nil,
|
||||
types.ModuleName: {supply.Minter},
|
||||
staking.NotBondedPoolName: {supply.Burner, supply.Staking},
|
||||
staking.BondedPoolName: {supply.Burner, supply.Staking},
|
||||
}
|
||||
supplyKeeper := supply.NewKeeper(types.ModuleCdc, keySupply, accountKeeper, bankKeeper, maccPerms)
|
||||
supplyKeeper.SetSupply(ctx, supply.NewSupply(sdk.Coins{}))
|
||||
|
||||
stakingKeeper := staking.NewKeeper(
|
||||
types.ModuleCdc, keyStaking, tkeyStaking, supplyKeeper, paramsKeeper.Subspace(staking.DefaultParamspace), staking.DefaultCodespace,
|
||||
)
|
||||
mintKeeper := NewKeeper(types.ModuleCdc, keyMint, paramsKeeper.Subspace(types.DefaultParamspace), &stakingKeeper, supplyKeeper, auth.FeeCollectorName)
|
||||
|
||||
// set module accounts
|
||||
supplyKeeper.SetModuleAccount(ctx, feeCollectorAcc)
|
||||
supplyKeeper.SetModuleAccount(ctx, minterAcc)
|
||||
supplyKeeper.SetModuleAccount(ctx, notBondedPool)
|
||||
supplyKeeper.SetModuleAccount(ctx, bondPool)
|
||||
|
||||
mintKeeper.SetParams(ctx, types.DefaultParams())
|
||||
mintKeeper.SetMinter(ctx, types.DefaultInitialMinter())
|
||||
|
||||
return testInput{ctx, types.ModuleCdc, mintKeeper}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package keeper_test
|
||||
|
||||
import (
|
||||
abci "github.com/tendermint/tendermint/abci/types"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/simapp"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/mint/internal/types"
|
||||
)
|
||||
|
||||
// returns context and an app with updated mint keeper
|
||||
func createTestApp(isCheckTx bool) (*simapp.SimApp, sdk.Context) {
|
||||
app := simapp.Setup(isCheckTx)
|
||||
|
||||
ctx := app.BaseApp.NewContext(isCheckTx, abci.Header{})
|
||||
app.MintKeeper.SetParams(ctx, types.DefaultParams())
|
||||
app.MintKeeper.SetMinter(ctx, types.DefaultInitialMinter())
|
||||
|
||||
return app, ctx
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package keeper
|
||||
package keeper_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
@ -6,71 +6,75 @@ import (
|
|||
"github.com/stretchr/testify/require"
|
||||
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
keep "github.com/cosmos/cosmos-sdk/x/mint/internal/keeper"
|
||||
"github.com/cosmos/cosmos-sdk/x/mint/internal/types"
|
||||
|
||||
abci "github.com/tendermint/tendermint/abci/types"
|
||||
)
|
||||
|
||||
func TestNewQuerier(t *testing.T) {
|
||||
input := newTestInput(t)
|
||||
querier := NewQuerier(input.mintKeeper)
|
||||
app, ctx := createTestApp(true)
|
||||
querier := keep.NewQuerier(app.MintKeeper)
|
||||
|
||||
query := abci.RequestQuery{
|
||||
Path: "",
|
||||
Data: []byte{},
|
||||
}
|
||||
|
||||
_, err := querier(input.ctx, []string{types.QueryParameters}, query)
|
||||
_, err := querier(ctx, []string{types.QueryParameters}, query)
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = querier(input.ctx, []string{types.QueryInflation}, query)
|
||||
_, err = querier(ctx, []string{types.QueryInflation}, query)
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = querier(input.ctx, []string{types.QueryAnnualProvisions}, query)
|
||||
_, err = querier(ctx, []string{types.QueryAnnualProvisions}, query)
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = querier(input.ctx, []string{"foo"}, query)
|
||||
_, err = querier(ctx, []string{"foo"}, query)
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
func TestQueryParams(t *testing.T) {
|
||||
input := newTestInput(t)
|
||||
app, ctx := createTestApp(true)
|
||||
querier := keep.NewQuerier(app.MintKeeper)
|
||||
|
||||
var params types.Params
|
||||
|
||||
res, sdkErr := queryParams(input.ctx, input.mintKeeper)
|
||||
res, sdkErr := querier(ctx, []string{types.QueryParameters}, abci.RequestQuery{})
|
||||
require.NoError(t, sdkErr)
|
||||
|
||||
err := input.cdc.UnmarshalJSON(res, ¶ms)
|
||||
err := app.Codec().UnmarshalJSON(res, ¶ms)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, input.mintKeeper.GetParams(input.ctx), params)
|
||||
require.Equal(t, app.MintKeeper.GetParams(ctx), params)
|
||||
}
|
||||
|
||||
func TestQueryInflation(t *testing.T) {
|
||||
input := newTestInput(t)
|
||||
app, ctx := createTestApp(true)
|
||||
querier := keep.NewQuerier(app.MintKeeper)
|
||||
|
||||
var inflation sdk.Dec
|
||||
|
||||
res, sdkErr := queryInflation(input.ctx, input.mintKeeper)
|
||||
res, sdkErr := querier(ctx, []string{types.QueryInflation}, abci.RequestQuery{})
|
||||
require.NoError(t, sdkErr)
|
||||
|
||||
err := input.cdc.UnmarshalJSON(res, &inflation)
|
||||
err := app.Codec().UnmarshalJSON(res, &inflation)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, input.mintKeeper.GetMinter(input.ctx).Inflation, inflation)
|
||||
require.Equal(t, app.MintKeeper.GetMinter(ctx).Inflation, inflation)
|
||||
}
|
||||
|
||||
func TestQueryAnnualProvisions(t *testing.T) {
|
||||
input := newTestInput(t)
|
||||
app, ctx := createTestApp(true)
|
||||
querier := keep.NewQuerier(app.MintKeeper)
|
||||
|
||||
var annualProvisions sdk.Dec
|
||||
|
||||
res, sdkErr := queryAnnualProvisions(input.ctx, input.mintKeeper)
|
||||
res, sdkErr := querier(ctx, []string{types.QueryAnnualProvisions}, abci.RequestQuery{})
|
||||
require.NoError(t, sdkErr)
|
||||
|
||||
err := input.cdc.UnmarshalJSON(res, &annualProvisions)
|
||||
err := app.Codec().UnmarshalJSON(res, &annualProvisions)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, input.mintKeeper.GetMinter(input.ctx).AnnualProvisions, annualProvisions)
|
||||
require.Equal(t, app.MintKeeper.GetMinter(ctx).AnnualProvisions, annualProvisions)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue