package v3_test import ( "fmt" "testing" v3 "github.com/evmos/ethermint/x/evm/migrations/v3" "github.com/stretchr/testify/require" "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/evmos/ethermint/encoding" "github.com/evmos/ethermint/app" v3types "github.com/evmos/ethermint/x/evm/migrations/v3/types" "github.com/evmos/ethermint/x/evm/types" ) func TestMigrateStore(t *testing.T) { encCfg := encoding.MakeConfig(app.ModuleBasics) evmKey := sdk.NewKVStoreKey(types.StoreKey) tEvmKey := sdk.NewTransientStoreKey(fmt.Sprintf("%s_test", types.StoreKey)) ctx := testutil.DefaultContext(evmKey, tEvmKey) paramstore := paramtypes.NewSubspace( encCfg.Codec, encCfg.Amino, evmKey, tEvmKey, "evm", ).WithKeyTable(v3types.ParamKeyTable()) params := v3types.DefaultParams() paramstore.SetParamSet(ctx, ¶ms) require.Panics(t, func() { var preMigrationConfig types.ChainConfig paramstore.Get(ctx, types.ParamStoreKeyChainConfig, &preMigrationConfig) }) var preMigrationConfig v3types.ChainConfig paramstore.Get(ctx, types.ParamStoreKeyChainConfig, &preMigrationConfig) require.NotNil(t, preMigrationConfig.MergeForkBlock) paramstore = paramtypes.NewSubspace( encCfg.Codec, encCfg.Amino, evmKey, tEvmKey, "evm", ).WithKeyTable(types.ParamKeyTable()) err := v3.MigrateStore(ctx, ¶mstore) require.NoError(t, err) updatedDefaultConfig := types.DefaultChainConfig() var postMigrationConfig types.ChainConfig paramstore.Get(ctx, types.ParamStoreKeyChainConfig, &postMigrationConfig) require.Equal(t, postMigrationConfig.GrayGlacierBlock, updatedDefaultConfig.GrayGlacierBlock) require.Equal(t, postMigrationConfig.MergeNetsplitBlock, updatedDefaultConfig.MergeNetsplitBlock) require.Panics(t, func() { var preMigrationConfig v3types.ChainConfig paramstore.Get(ctx, types.ParamStoreKeyChainConfig, &preMigrationConfig) }) }