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

     1  package v043_test
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"github.com/Finschia/finschia-sdk/client"
    10  	"github.com/Finschia/finschia-sdk/simapp"
    11  	sdk "github.com/Finschia/finschia-sdk/types"
    12  	v043bank "github.com/Finschia/finschia-sdk/x/bank/legacy/v043"
    13  	"github.com/Finschia/finschia-sdk/x/bank/types"
    14  )
    15  
    16  func TestMigrateJSON(t *testing.T) {
    17  	encodingConfig := simapp.MakeTestEncodingConfig()
    18  	clientCtx := client.Context{}.
    19  		WithInterfaceRegistry(encodingConfig.InterfaceRegistry).
    20  		WithTxConfig(encodingConfig.TxConfig).
    21  		WithCodec(encodingConfig.Marshaler)
    22  
    23  	voter, err := sdk.AccAddressFromBech32("link1fl48vsnmsdzcv85q5d2q4z5ajdha8yu3q4fdzl")
    24  	require.NoError(t, err)
    25  	bankGenState := &types.GenesisState{
    26  		Balances: []types.Balance{
    27  			{
    28  				Address: voter.String(),
    29  				Coins: sdk.Coins{
    30  					sdk.NewCoin("foo", sdk.NewInt(10)),
    31  					sdk.NewCoin("bar", sdk.NewInt(20)),
    32  					sdk.NewCoin("foobar", sdk.NewInt(0)),
    33  				},
    34  			},
    35  		},
    36  		Supply: sdk.Coins{
    37  			sdk.NewCoin("foo", sdk.NewInt(10)),
    38  			sdk.NewCoin("bar", sdk.NewInt(20)),
    39  			sdk.NewCoin("foobar", sdk.NewInt(0)),
    40  			sdk.NewCoin("barfoo", sdk.NewInt(0)),
    41  		},
    42  	}
    43  
    44  	migrated := v043bank.MigrateJSON(bankGenState)
    45  
    46  	bz, err := clientCtx.Codec.MarshalJSON(migrated)
    47  	require.NoError(t, err)
    48  
    49  	// Indent the JSON bz correctly.
    50  	var jsonObj map[string]interface{}
    51  	err = json.Unmarshal(bz, &jsonObj)
    52  	require.NoError(t, err)
    53  	indentedBz, err := json.MarshalIndent(jsonObj, "", "\t")
    54  	require.NoError(t, err)
    55  
    56  	// Make sure about:
    57  	// - zero coin balances pruned.
    58  	// - zero supply denoms pruned.
    59  	expected := `{
    60  	"balances": [
    61  		{
    62  			"address": "link1fl48vsnmsdzcv85q5d2q4z5ajdha8yu3q4fdzl",
    63  			"coins": [
    64  				{
    65  					"amount": "20",
    66  					"denom": "bar"
    67  				},
    68  				{
    69  					"amount": "10",
    70  					"denom": "foo"
    71  				}
    72  			]
    73  		}
    74  	],
    75  	"denom_metadata": [],
    76  	"params": {
    77  		"default_send_enabled": false,
    78  		"send_enabled": []
    79  	},
    80  	"supply": [
    81  		{
    82  			"amount": "20",
    83  			"denom": "bar"
    84  		},
    85  		{
    86  			"amount": "10",
    87  			"denom": "foo"
    88  		}
    89  	]
    90  }`
    91  
    92  	require.Equal(t, expected, string(indentedBz))
    93  }