Skip to content
Closed

testing #1172

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -1185,6 +1185,7 @@ func New(
appupgradev6.New(
app.ModuleManager,
app.configurator,
app.BankKeeper,
),
}

Expand Down
48 changes: 48 additions & 0 deletions app/upgrade/v6/denom_symbol.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package v6

import (
"context"
"fmt"
"strings"

sdk "github.com/cosmos/cosmos-sdk/types"

"github.com/CoreumFoundation/coreum/v6/pkg/config/constant"
wbankkeeper "github.com/CoreumFoundation/coreum/v6/x/wbank/keeper"
)

func migrateDenomSymbol(ctx context.Context, bankKeeper wbankkeeper.BaseKeeperWrapper) error {
var denom string

sdkCtx := sdk.UnwrapSDKContext(ctx)
switch sdkCtx.ChainID() {
case string(constant.ChainIDMain):
denom = constant.DenomMain
case string(constant.ChainIDTest):
denom = constant.DenomTest
case string(constant.ChainIDDev):
denom = constant.DenomDev
default:
return fmt.Errorf("unknown chain id: %s", sdkCtx.ChainID())
}

meta, found := bankKeeper.GetDenomMetaData(ctx, denom)
if !found {
return fmt.Errorf("denom metadata not found for %s", denom)
}

meta.Description = strings.ReplaceAll(meta.Description, "core", "tx")
meta.Base = strings.ReplaceAll(meta.Base, "core", "tx")
meta.Display = strings.ReplaceAll(meta.Display, "core", "tx")
meta.Name = strings.ReplaceAll(meta.Name, "core", "tx")
meta.Symbol = strings.ReplaceAll(meta.Symbol, "core", "tx")

// Optionally adjust DenomUnits to reflect the new display name
for i := range meta.DenomUnits {
meta.DenomUnits[i].Denom = strings.ReplaceAll(meta.DenomUnits[i].Denom, "core", "tx")
}

bankKeeper.SetDenomMetaData(ctx, meta)

return nil
}
9 changes: 8 additions & 1 deletion app/upgrade/v6/upgrade.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@ import (
"github.com/cosmos/cosmos-sdk/types/module"

"github.com/CoreumFoundation/coreum/v6/app/upgrade"
wbankkeeper "github.com/CoreumFoundation/coreum/v6/x/wbank/keeper"
)

// Name defines the upgrade name.
const Name = "v6"

// New makes an upgrade handler for v6 upgrade.
func New(mm *module.Manager, configurator module.Configurator) upgrade.Upgrade {
func New(
mm *module.Manager, configurator module.Configurator, bankKeeper wbankkeeper.BaseKeeperWrapper,
) upgrade.Upgrade {
return upgrade.Upgrade{
Name: Name,
StoreUpgrades: store.StoreUpgrades{
Expand All @@ -26,6 +29,10 @@ func New(mm *module.Manager, configurator module.Configurator) upgrade.Upgrade {
return nil, err
}

if err := migrateDenomSymbol(ctx, bankKeeper); err != nil {
return nil, err
}

return vmap, nil
},
}
Expand Down
82 changes: 82 additions & 0 deletions integration-tests/upgrade/denom_symbol.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
//go:build integrationtests

package upgrade

import (
"fmt"
"testing"

banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
"github.com/stretchr/testify/require"

integrationtests "github.com/CoreumFoundation/coreum/v6/integration-tests"
"github.com/CoreumFoundation/coreum/v6/pkg/config/constant"
)

type denomSymbol struct {
}

//nolint:dupl
func (d *denomSymbol) Before(t *testing.T) {
ctx, chain := integrationtests.NewCoreumTestingContext(t)
requireT := require.New(t)

client := banktypes.NewQueryClient(chain.ClientContext)
denomMetadata, err := client.DenomMetadata(ctx, &banktypes.QueryDenomMetadataRequest{
Denom: chain.ChainSettings.Denom,
})
requireT.NoError(err)

prefix := ""
if chain.ChainSettings.ChainID == string(constant.ChainIDTest) {
prefix = "test"
} else if chain.ChainSettings.ChainID == string(constant.ChainIDDev) {
prefix = "dev"
}

requireT.Equal(prefix+"core coin", denomMetadata.Metadata.Description)
requireT.Contains(denomMetadata.Metadata.DenomUnits, &banktypes.DenomUnit{
Denom: fmt.Sprintf("u%score", prefix),
})
requireT.Contains(denomMetadata.Metadata.DenomUnits, &banktypes.DenomUnit{
Denom: prefix + "core",
Exponent: 6,
})
requireT.Equal(fmt.Sprintf("u%score", prefix), denomMetadata.Metadata.Base)
requireT.Equal(prefix+"core", denomMetadata.Metadata.Display)
requireT.Equal(fmt.Sprintf("u%score", prefix), denomMetadata.Metadata.Name)
requireT.Equal(fmt.Sprintf("u%score", prefix), denomMetadata.Metadata.Symbol)
}

//nolint:dupl
func (d *denomSymbol) After(t *testing.T) {
ctx, chain := integrationtests.NewCoreumTestingContext(t)
requireT := require.New(t)

client := banktypes.NewQueryClient(chain.ClientContext)
denomMetadata, err := client.DenomMetadata(ctx, &banktypes.QueryDenomMetadataRequest{
Denom: chain.ChainSettings.Denom,
})
requireT.NoError(err)

prefix := ""
if chain.ChainSettings.ChainID == string(constant.ChainIDTest) {
prefix = "test"
} else if chain.ChainSettings.ChainID == string(constant.ChainIDDev) {
prefix = "dev"
}

panic(fmt.Sprintf("%+v", denomMetadata.Metadata))
requireT.Equal(prefix+"tx coin", denomMetadata.Metadata.Description)
requireT.Contains(denomMetadata.Metadata.DenomUnits, &banktypes.DenomUnit{
Denom: fmt.Sprintf("u%stx", prefix),
})
requireT.Contains(denomMetadata.Metadata.DenomUnits, &banktypes.DenomUnit{
Denom: prefix + "tx",
Exponent: 6,
})
requireT.Equal(fmt.Sprintf("u%stx", prefix), denomMetadata.Metadata.Base)
requireT.Equal(prefix+"tx", denomMetadata.Metadata.Display)
requireT.Equal(fmt.Sprintf("u%stx", prefix), denomMetadata.Metadata.Name)
requireT.Equal(fmt.Sprintf("u%stx", prefix), denomMetadata.Metadata.Symbol)
}
4 changes: 3 additions & 1 deletion integration-tests/upgrade/upgrade_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,9 @@ func TestUpgrade(t *testing.T) {
}

func upgradeV5ToV6(t *testing.T) {
tests := []upgradeTest{}
tests := []upgradeTest{
&denomSymbol{},
}

for _, test := range tests {
test.Before(t)
Expand Down
Loading