github.com/cosmos/cosmos-sdk@v0.50.10/x/crisis/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  	sdkmath "cosmossdk.io/math"
    10  	storetypes "cosmossdk.io/store/types"
    11  
    12  	"github.com/cosmos/cosmos-sdk/codec"
    13  	addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
    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  	"github.com/cosmos/cosmos-sdk/x/crisis"
    19  	"github.com/cosmos/cosmos-sdk/x/crisis/keeper"
    20  	crisistestutil "github.com/cosmos/cosmos-sdk/x/crisis/testutil"
    21  	"github.com/cosmos/cosmos-sdk/x/crisis/types"
    22  )
    23  
    24  type GenesisTestSuite struct {
    25  	suite.Suite
    26  
    27  	sdkCtx sdk.Context
    28  	keeper keeper.Keeper
    29  	cdc    codec.BinaryCodec
    30  }
    31  
    32  func TestGenesisTestSuite(t *testing.T) {
    33  	suite.Run(t, new(GenesisTestSuite))
    34  }
    35  
    36  func (s *GenesisTestSuite) SetupTest() {
    37  	key := storetypes.NewKVStoreKey(types.StoreKey)
    38  	storeService := runtime.NewKVStoreService(key)
    39  	testCtx := testutil.DefaultContextWithDB(s.T(), key, storetypes.NewTransientStoreKey("transient_test"))
    40  	encCfg := moduletestutil.MakeTestEncodingConfig(crisis.AppModuleBasic{})
    41  
    42  	// gomock initializations
    43  	ctrl := gomock.NewController(s.T())
    44  	s.cdc = codec.NewProtoCodec(encCfg.InterfaceRegistry)
    45  	s.sdkCtx = testCtx.Ctx
    46  
    47  	supplyKeeper := crisistestutil.NewMockSupplyKeeper(ctrl)
    48  
    49  	s.keeper = *keeper.NewKeeper(s.cdc, storeService, 5, supplyKeeper, "", "", addresscodec.NewBech32Codec("cosmos"))
    50  }
    51  
    52  func (s *GenesisTestSuite) TestImportExportGenesis() {
    53  	// default params
    54  	constantFee := sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(1000))
    55  	err := s.keeper.ConstantFee.Set(s.sdkCtx, constantFee)
    56  	s.Require().NoError(err)
    57  	genesis := s.keeper.ExportGenesis(s.sdkCtx)
    58  
    59  	// set constant fee to zero
    60  	constantFee = sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(0))
    61  	err = s.keeper.ConstantFee.Set(s.sdkCtx, constantFee)
    62  	s.Require().NoError(err)
    63  
    64  	s.keeper.InitGenesis(s.sdkCtx, genesis)
    65  	newGenesis := s.keeper.ExportGenesis(s.sdkCtx)
    66  	s.Require().Equal(genesis, newGenesis)
    67  }
    68  
    69  func (s *GenesisTestSuite) TestInitGenesis() {
    70  	genesisState := types.DefaultGenesisState()
    71  	genesisState.ConstantFee = sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(1000))
    72  	s.keeper.InitGenesis(s.sdkCtx, genesisState)
    73  
    74  	constantFee, err := s.keeper.ConstantFee.Get(s.sdkCtx)
    75  	s.Require().NoError(err)
    76  	s.Require().Equal(genesisState.ConstantFee, constantFee)
    77  }