github.com/cosmos/cosmos-sdk@v0.50.10/x/auth/migrations/v5/migrate_test.go (about)

     1  package v5
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/cosmos/gogoproto/types"
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"cosmossdk.io/collections"
    10  	"cosmossdk.io/collections/colltest"
    11  )
    12  
    13  func TestMigrate(t *testing.T) {
    14  	kv, ctx := colltest.MockStore()
    15  	sb := collections.NewSchemaBuilder(kv)
    16  	seq := collections.NewSequence(sb, collections.NewPrefix(0), "seq")
    17  
    18  	wantValue := uint64(100)
    19  
    20  	// set old sequence to wanted value
    21  	legacySeqBytes, err := (&types.UInt64Value{Value: wantValue}).Marshal()
    22  	require.NoError(t, err)
    23  
    24  	err = kv.OpenKVStore(ctx).Set(LegacyGlobalAccountNumberKey, legacySeqBytes)
    25  	require.NoError(t, err)
    26  
    27  	err = Migrate(ctx, kv, seq)
    28  	require.NoError(t, err)
    29  
    30  	// check that after migration the sequence is what we want it to be
    31  	gotValue, err := seq.Peek(ctx)
    32  	require.NoError(t, err)
    33  	require.Equal(t, wantValue, gotValue)
    34  
    35  	// case the global account number was not set
    36  	ctx = kv.NewStoreContext() // this resets the store to zero
    37  	wantValue = collections.DefaultSequenceStart
    38  
    39  	err = Migrate(ctx, kv, seq)
    40  	require.NoError(t, err)
    41  
    42  	gotValue, err = seq.Next(ctx)
    43  	require.NoError(t, err)
    44  	require.Equal(t, wantValue, gotValue)
    45  }