package testutil import ( "testing" "github.com/stretchr/testify/assert" "github.com/tendermint/tendermint/libs/log" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" dbm "github.com/tendermint/tm-db" "github.com/cosmos/cosmos-sdk/store" storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" ) // DefaultContext creates a sdk.Context with a fresh MemDB that can be used in tests. func DefaultContext(key storetypes.StoreKey, tkey storetypes.StoreKey) sdk.Context { db := dbm.NewMemDB() cms := store.NewCommitMultiStore(db) cms.MountStoreWithDB(key, storetypes.StoreTypeIAVL, db) cms.MountStoreWithDB(tkey, storetypes.StoreTypeTransient, db) err := cms.LoadLatestVersion() if err != nil { panic(err) } ctx := sdk.NewContext(cms, tmproto.Header{}, false, log.NewNopLogger()) return ctx } type TestContext struct { Ctx sdk.Context DB *dbm.MemDB CMS store.CommitMultiStore } func DefaultContextWithDB(t *testing.T, key storetypes.StoreKey, tkey storetypes.StoreKey) TestContext { db := dbm.NewMemDB() cms := store.NewCommitMultiStore(db) cms.MountStoreWithDB(key, storetypes.StoreTypeIAVL, db) cms.MountStoreWithDB(tkey, storetypes.StoreTypeTransient, db) err := cms.LoadLatestVersion() assert.NoError(t, err) ctx := sdk.NewContext(cms, tmproto.Header{}, false, log.NewNopLogger()) return TestContext{ctx, db, cms} }