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  }