github.com/Finschia/finschia-sdk@v0.48.1/x/gov/legacy/v043/json_test.go (about)

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