mukan-ignite/ignite/templates/module/migration/module_test.go
Mukan Erkin Törük 26b204bd04
Some checks are pending
Docs Deploy / build_and_deploy (push) Waiting to run
Generate Docs / cli (push) Waiting to run
Generate Config Doc / cli (push) Waiting to run
Go formatting / go-formatting (push) Waiting to run
Check links / markdown-link-check (push) Waiting to run
Integration / pre-test (push) Waiting to run
Integration / test on (push) Blocked by required conditions
Integration / status (push) Blocked by required conditions
Lint / Lint Go code (push) Waiting to run
Test / test (ubuntu-latest) (push) Waiting to run
feat: fork Ignite CLI v29 as Mukan Ignite — remove cosmos-sdk restrictions
2026-05-11 03:31:37 +03:00

131 lines
4.3 KiB
Go

package modulemigration
import (
"strings"
"testing"
"github.com/stretchr/testify/require"
)
func TestUpdateModuleAddsInitialMigration(t *testing.T) {
opts := &Options{
ModuleName: "blog",
ModulePath: "github.com/test/blog",
FromVersion: 1,
ToVersion: 2,
}
got, err := updateModule(moduleWithServiceRegistrar(`
func (am AppModule) RegisterServices(registrar grpc.ServiceRegistrar) error {
types.RegisterMsgServer(registrar, keeper.NewMsgServerImpl(am.keeper))
types.RegisterQueryServer(registrar, keeper.NewQueryServerImpl(am.keeper))
return nil
}
func (AppModule) ConsensusVersion() uint64 { return 1 }
`), opts)
require.NoError(t, err)
normalized := normalize(got)
require.Contains(t, normalized, `migrationv2"github.com/test/blog/x/blog/migrations/v2"`)
require.Contains(t, normalized, `cfg,ok:=registrar.(module.Configurator)`)
require.Contains(t, normalized, `if!ok{returnnil}`)
require.Contains(t, normalized, `cfg.RegisterMigration(types.ModuleName,1,migrationv2.Migrate)`)
require.Contains(t, normalized, `func(AppModule)ConsensusVersion()uint64{return2}`)
}
func TestUpdateModuleAppendsMigrationToExistingConfiguratorBlock(t *testing.T) {
opts := &Options{
ModuleName: "blog",
ModulePath: "github.com/test/blog",
FromVersion: 2,
ToVersion: 3,
}
got, err := updateModule(moduleWithServiceRegistrar(`
func (am AppModule) RegisterServices(registrar grpc.ServiceRegistrar) error {
types.RegisterMsgServer(registrar, keeper.NewMsgServerImpl(am.keeper))
types.RegisterQueryServer(registrar, keeper.NewQueryServerImpl(am.keeper))
cfg, ok := registrar.(module.Configurator)
if !ok {
return nil
}
if err := cfg.RegisterMigration(types.ModuleName, 1, migrationv2.Migrate); err != nil {
return err
}
return nil
}
func (AppModule) ConsensusVersion() uint64 { return 2 }
`, `migrationv2 "github.com/test/blog/x/blog/migrations/v2"`), opts)
require.NoError(t, err)
normalized := normalize(got)
require.Equal(t, 1, strings.Count(normalized, `registrar.(module.Configurator)`))
require.Contains(t, normalized, `migrationv3"github.com/test/blog/x/blog/migrations/v3"`)
require.Contains(t, normalized, `cfg.RegisterMigration(types.ModuleName,1,migrationv2.Migrate)`)
require.Contains(t, normalized, `cfg.RegisterMigration(types.ModuleName,2,migrationv3.Migrate)`)
require.Contains(t, normalized, `func(AppModule)ConsensusVersion()uint64{return3}`)
}
func TestUpdateModuleSupportsConfiguratorSignatureAndConstantVersion(t *testing.T) {
opts := &Options{
ModuleName: "blog",
ModulePath: "github.com/test/blog",
FromVersion: 2,
ToVersion: 3,
}
got, err := updateModule(moduleWithConfigurator(`
const ConsensusVersion = 2
func (am AppModule) RegisterServices(cfg module.Configurator) {
types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper))
types.RegisterQueryServer(cfg.QueryServer(), keeper.NewQueryServerImpl(am.keeper))
}
func (AppModule) ConsensusVersion() uint64 { return ConsensusVersion }
`), opts)
require.NoError(t, err)
normalized := normalize(got)
require.NotContains(t, normalized, `registrar.(module.Configurator)`)
require.Contains(t, normalized, `cfg.RegisterMigration(types.ModuleName,2,migrationv3.Migrate)`)
require.Contains(t, normalized, `iferr:=cfg.RegisterMigration(types.ModuleName,2,migrationv3.Migrate);err!=nil{panic(err)}`)
require.Contains(t, normalized, `constConsensusVersion=3`)
version, err := ConsensusVersion(got)
require.NoError(t, err)
require.EqualValues(t, 3, version)
}
func moduleWithServiceRegistrar(body string, extraImports ...string) string {
imports := []string{
`"github.com/cosmos/cosmos-sdk/types/module"`,
`"google.golang.org/grpc"`,
`"github.com/test/blog/x/blog/keeper"`,
`"github.com/test/blog/x/blog/types"`,
}
imports = append(imports, extraImports...)
return "package blog\n\nimport (\n\t" + strings.Join(imports, "\n\t") + "\n)\n\n" + body
}
func moduleWithConfigurator(body string, extraImports ...string) string {
imports := []string{
`"github.com/cosmos/cosmos-sdk/types/module"`,
`"github.com/test/blog/x/blog/keeper"`,
`"github.com/test/blog/x/blog/types"`,
}
imports = append(imports, extraImports...)
return "package blog\n\nimport (\n\t" + strings.Join(imports, "\n\t") + "\n)\n\n" + body
}
func normalize(content string) string {
return strings.Join(strings.Fields(content), "")
}