github.com/cosmos/cosmos-sdk@v0.50.10/x/mint/keeper/genesis_test.go (about) 1 package keeper_test 2 3 import ( 4 "testing" 5 6 "github.com/golang/mock/gomock" 7 "github.com/stretchr/testify/suite" 8 9 "cosmossdk.io/collections" 10 "cosmossdk.io/math" 11 storetypes "cosmossdk.io/store/types" 12 13 "github.com/cosmos/cosmos-sdk/codec" 14 "github.com/cosmos/cosmos-sdk/runtime" 15 "github.com/cosmos/cosmos-sdk/testutil" 16 sdk "github.com/cosmos/cosmos-sdk/types" 17 moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" 18 authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" 19 "github.com/cosmos/cosmos-sdk/x/mint" 20 "github.com/cosmos/cosmos-sdk/x/mint/keeper" 21 minttestutil "github.com/cosmos/cosmos-sdk/x/mint/testutil" 22 "github.com/cosmos/cosmos-sdk/x/mint/types" 23 ) 24 25 var minterAcc = authtypes.NewEmptyModuleAccount(types.ModuleName, authtypes.Minter) 26 27 type GenesisTestSuite struct { 28 suite.Suite 29 30 sdkCtx sdk.Context 31 keeper keeper.Keeper 32 cdc codec.BinaryCodec 33 accountKeeper types.AccountKeeper 34 key *storetypes.KVStoreKey 35 } 36 37 func TestGenesisTestSuite(t *testing.T) { 38 suite.Run(t, new(GenesisTestSuite)) 39 } 40 41 func (s *GenesisTestSuite) SetupTest() { 42 key := storetypes.NewKVStoreKey(types.StoreKey) 43 testCtx := testutil.DefaultContextWithDB(s.T(), key, storetypes.NewTransientStoreKey("transient_test")) 44 encCfg := moduletestutil.MakeTestEncodingConfig(mint.AppModuleBasic{}) 45 46 // gomock initializations 47 ctrl := gomock.NewController(s.T()) 48 s.cdc = codec.NewProtoCodec(encCfg.InterfaceRegistry) 49 s.sdkCtx = testCtx.Ctx 50 s.key = key 51 52 stakingKeeper := minttestutil.NewMockStakingKeeper(ctrl) 53 accountKeeper := minttestutil.NewMockAccountKeeper(ctrl) 54 bankKeeper := minttestutil.NewMockBankKeeper(ctrl) 55 s.accountKeeper = accountKeeper 56 accountKeeper.EXPECT().GetModuleAddress(minterAcc.Name).Return(minterAcc.GetAddress()) 57 accountKeeper.EXPECT().GetModuleAccount(s.sdkCtx, minterAcc.Name).Return(minterAcc) 58 59 s.keeper = keeper.NewKeeper(s.cdc, runtime.NewKVStoreService(key), stakingKeeper, accountKeeper, bankKeeper, "", "") 60 } 61 62 func (s *GenesisTestSuite) TestImportExportGenesis() { 63 genesisState := types.DefaultGenesisState() 64 genesisState.Minter = types.NewMinter(math.LegacyNewDecWithPrec(20, 2), math.LegacyNewDec(1)) 65 genesisState.Params = types.NewParams( 66 "testDenom", 67 math.LegacyNewDecWithPrec(15, 2), 68 math.LegacyNewDecWithPrec(22, 2), 69 math.LegacyNewDecWithPrec(9, 2), 70 math.LegacyNewDecWithPrec(69, 2), 71 uint64(60*60*8766/5), 72 ) 73 74 s.keeper.InitGenesis(s.sdkCtx, s.accountKeeper, genesisState) 75 76 minter, err := s.keeper.Minter.Get(s.sdkCtx) 77 s.Require().Equal(genesisState.Minter, minter) 78 s.Require().NoError(err) 79 80 invalidCtx := testutil.DefaultContextWithDB(s.T(), s.key, storetypes.NewTransientStoreKey("transient_test")) 81 _, err = s.keeper.Minter.Get(invalidCtx.Ctx) 82 s.Require().ErrorIs(err, collections.ErrNotFound) 83 84 params, err := s.keeper.Params.Get(s.sdkCtx) 85 s.Require().Equal(genesisState.Params, params) 86 s.Require().NoError(err) 87 88 genesisState2 := s.keeper.ExportGenesis(s.sdkCtx) 89 s.Require().Equal(genesisState, genesisState2) 90 }