github.com/Finschia/finschia-sdk@v0.48.1/x/gov/legacy/v043/store_test.go (about) 1 package v043_test 2 3 import ( 4 "bytes" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/require" 9 10 "github.com/Finschia/finschia-sdk/simapp" 11 "github.com/Finschia/finschia-sdk/testutil" 12 "github.com/Finschia/finschia-sdk/testutil/testdata" 13 sdk "github.com/Finschia/finschia-sdk/types" 14 v040gov "github.com/Finschia/finschia-sdk/x/gov/legacy/v040" 15 v043gov "github.com/Finschia/finschia-sdk/x/gov/legacy/v043" 16 "github.com/Finschia/finschia-sdk/x/gov/types" 17 ) 18 19 func TestMigrateStore(t *testing.T) { 20 cdc := simapp.MakeTestEncodingConfig().Marshaler 21 govKey := sdk.NewKVStoreKey("gov") 22 ctx := testutil.DefaultContext(govKey, sdk.NewTransientStoreKey("transient_test")) 23 store := ctx.KVStore(govKey) 24 25 _, _, addr1 := testdata.KeyTestPubAddr() 26 proposalID := uint64(6) 27 now := time.Now() 28 // Use dummy value for keys where we don't test values. 29 dummyValue := []byte("foo") 30 // Use real values for votes, as we're testing weighted votes. 31 oldVote := types.Vote{ProposalId: 1, Voter: "foobar", Option: types.OptionNoWithVeto} 32 oldVoteValue := cdc.MustMarshal(&oldVote) 33 newVote := types.Vote{ProposalId: 1, Voter: "foobar", Options: types.WeightedVoteOptions{{Option: types.OptionNoWithVeto, Weight: sdk.NewDec(1)}}} 34 newVoteValue := cdc.MustMarshal(&newVote) 35 36 testCases := []struct { 37 name string 38 oldKey, oldValue, newKey, newValue []byte 39 }{ 40 { 41 "ProposalKey", 42 v040gov.ProposalKey(proposalID), dummyValue, 43 types.ProposalKey(proposalID), dummyValue, 44 }, 45 { 46 "ActiveProposalQueue", 47 v040gov.ActiveProposalQueueKey(proposalID, now), dummyValue, 48 types.ActiveProposalQueueKey(proposalID, now), dummyValue, 49 }, 50 { 51 "InactiveProposalQueue", 52 v040gov.InactiveProposalQueueKey(proposalID, now), dummyValue, 53 types.InactiveProposalQueueKey(proposalID, now), dummyValue, 54 }, 55 { 56 "ProposalIDKey", 57 v040gov.ProposalIDKey, dummyValue, 58 types.ProposalIDKey, dummyValue, 59 }, 60 { 61 "DepositKey", 62 v040gov.DepositKey(proposalID, addr1), dummyValue, 63 types.DepositKey(proposalID, addr1), dummyValue, 64 }, 65 { 66 "VotesKeyPrefix", 67 v040gov.VoteKey(proposalID, addr1), oldVoteValue, 68 types.VoteKey(proposalID, addr1), newVoteValue, 69 }, 70 } 71 72 // Set all the old keys to the store 73 for _, tc := range testCases { 74 store.Set(tc.oldKey, tc.oldValue) 75 } 76 77 // Run migrations. 78 err := v043gov.MigrateStore(ctx, govKey, cdc) 79 require.NoError(t, err) 80 81 // Make sure the new keys are set and old keys are deleted. 82 for _, tc := range testCases { 83 tc := tc 84 t.Run(tc.name, func(t *testing.T) { 85 if !bytes.Equal(tc.oldKey, tc.newKey) { 86 require.Nil(t, store.Get(tc.oldKey)) 87 } 88 require.Equal(t, tc.newValue, store.Get(tc.newKey)) 89 }) 90 } 91 }