github.com/cosmos/cosmos-sdk@v0.50.10/x/gov/migrations/v2/json_test.go (about) 1 package v2_test 2 3 import ( 4 "encoding/json" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 9 "github.com/cosmos/cosmos-sdk/client" 10 sdk "github.com/cosmos/cosmos-sdk/types" 11 moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" 12 v2 "github.com/cosmos/cosmos-sdk/x/gov/migrations/v2" 13 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" 14 ) 15 16 func TestMigrateJSON(t *testing.T) { 17 encodingConfig := moduletestutil.MakeTestEncodingConfig() 18 clientCtx := client.Context{}. 19 WithInterfaceRegistry(encodingConfig.InterfaceRegistry). 20 WithTxConfig(encodingConfig.TxConfig). 21 WithCodec(encodingConfig.Codec) 22 23 voter, err := sdk.AccAddressFromBech32("cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh") 24 require.NoError(t, err) 25 govGenState := &v1beta1.GenesisState{ 26 Votes: v1beta1.Votes{ 27 v1beta1.Vote{ProposalId: 1, Voter: voter.String(), Option: v1beta1.OptionAbstain}, 28 v1beta1.Vote{ProposalId: 2, Voter: voter.String(), Option: v1beta1.OptionEmpty}, 29 v1beta1.Vote{ProposalId: 3, Voter: voter.String(), Option: v1beta1.OptionNo}, 30 v1beta1.Vote{ProposalId: 4, Voter: voter.String(), Option: v1beta1.OptionNoWithVeto}, 31 v1beta1.Vote{ProposalId: 5, Voter: voter.String(), Option: v1beta1.OptionYes}, 32 }, 33 } 34 35 migrated := v2.MigrateJSON(govGenState) 36 37 bz, err := clientCtx.Codec.MarshalJSON(migrated) 38 require.NoError(t, err) 39 40 // Indent the JSON bz correctly. 41 var jsonObj map[string]interface{} 42 err = json.Unmarshal(bz, &jsonObj) 43 require.NoError(t, err) 44 indentedBz, err := json.MarshalIndent(jsonObj, "", "\t") 45 require.NoError(t, err) 46 47 // Make sure about: 48 // - Votes are all ADR-037 weighted votes with weight 1. 49 expected := `{ 50 "deposit_params": { 51 "max_deposit_period": "0s", 52 "min_deposit": [] 53 }, 54 "deposits": [], 55 "proposals": [], 56 "starting_proposal_id": "0", 57 "tally_params": { 58 "quorum": "0", 59 "threshold": "0", 60 "veto_threshold": "0" 61 }, 62 "votes": [ 63 { 64 "option": "VOTE_OPTION_UNSPECIFIED", 65 "options": [ 66 { 67 "option": "VOTE_OPTION_ABSTAIN", 68 "weight": "1.000000000000000000" 69 } 70 ], 71 "proposal_id": "1", 72 "voter": "cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh" 73 }, 74 { 75 "option": "VOTE_OPTION_UNSPECIFIED", 76 "options": [ 77 { 78 "option": "VOTE_OPTION_UNSPECIFIED", 79 "weight": "1.000000000000000000" 80 } 81 ], 82 "proposal_id": "2", 83 "voter": "cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh" 84 }, 85 { 86 "option": "VOTE_OPTION_UNSPECIFIED", 87 "options": [ 88 { 89 "option": "VOTE_OPTION_NO", 90 "weight": "1.000000000000000000" 91 } 92 ], 93 "proposal_id": "3", 94 "voter": "cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh" 95 }, 96 { 97 "option": "VOTE_OPTION_UNSPECIFIED", 98 "options": [ 99 { 100 "option": "VOTE_OPTION_NO_WITH_VETO", 101 "weight": "1.000000000000000000" 102 } 103 ], 104 "proposal_id": "4", 105 "voter": "cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh" 106 }, 107 { 108 "option": "VOTE_OPTION_UNSPECIFIED", 109 "options": [ 110 { 111 "option": "VOTE_OPTION_YES", 112 "weight": "1.000000000000000000" 113 } 114 ], 115 "proposal_id": "5", 116 "voter": "cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh" 117 } 118 ], 119 "voting_params": { 120 "voting_period": "0s" 121 } 122 }` 123 124 require.Equal(t, expected, string(indentedBz)) 125 }