github.com/cosmos/cosmos-sdk@v0.50.10/x/bank/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  	sdkmath "cosmossdk.io/math"
    10  
    11  	"github.com/cosmos/cosmos-sdk/client"
    12  	sdk "github.com/cosmos/cosmos-sdk/types"
    13  	moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
    14  	v2bank "github.com/cosmos/cosmos-sdk/x/bank/migrations/v2"
    15  	"github.com/cosmos/cosmos-sdk/x/bank/types"
    16  )
    17  
    18  func TestMigrateJSON(t *testing.T) {
    19  	encodingConfig := moduletestutil.MakeTestEncodingConfig()
    20  	clientCtx := client.Context{}.
    21  		WithInterfaceRegistry(encodingConfig.InterfaceRegistry).
    22  		WithTxConfig(encodingConfig.TxConfig).
    23  		WithCodec(encodingConfig.Codec)
    24  
    25  	voter, err := sdk.AccAddressFromBech32("cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh")
    26  	require.NoError(t, err)
    27  	bankGenState := &types.GenesisState{
    28  		Balances: []types.Balance{
    29  			{
    30  				Address: voter.String(),
    31  				Coins: sdk.Coins{
    32  					sdk.NewCoin("foo", sdkmath.NewInt(10)),
    33  					sdk.NewCoin("bar", sdkmath.NewInt(20)),
    34  					sdk.NewCoin("foobar", sdkmath.NewInt(0)),
    35  				},
    36  			},
    37  		},
    38  		Supply: sdk.Coins{
    39  			sdk.NewCoin("foo", sdkmath.NewInt(10)),
    40  			sdk.NewCoin("bar", sdkmath.NewInt(20)),
    41  			sdk.NewCoin("foobar", sdkmath.NewInt(0)),
    42  			sdk.NewCoin("barfoo", sdkmath.NewInt(0)),
    43  		},
    44  	}
    45  
    46  	migrated := v2bank.MigrateJSON(bankGenState)
    47  
    48  	bz, err := clientCtx.Codec.MarshalJSON(migrated)
    49  	require.NoError(t, err)
    50  
    51  	// Indent the JSON bz correctly.
    52  	var jsonObj map[string]interface{}
    53  	err = json.Unmarshal(bz, &jsonObj)
    54  	require.NoError(t, err)
    55  	indentedBz, err := json.MarshalIndent(jsonObj, "", "\t")
    56  	require.NoError(t, err)
    57  
    58  	// Make sure about:
    59  	// - zero coin balances pruned.
    60  	// - zero supply denoms pruned.
    61  	expected := `{
    62  	"balances": [
    63  		{
    64  			"address": "cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh",
    65  			"coins": [
    66  				{
    67  					"amount": "20",
    68  					"denom": "bar"
    69  				},
    70  				{
    71  					"amount": "10",
    72  					"denom": "foo"
    73  				}
    74  			]
    75  		}
    76  	],
    77  	"denom_metadata": [],
    78  	"params": {
    79  		"default_send_enabled": false,
    80  		"send_enabled": []
    81  	},
    82  	"send_enabled": [],
    83  	"supply": [
    84  		{
    85  			"amount": "20",
    86  			"denom": "bar"
    87  		},
    88  		{
    89  			"amount": "10",
    90  			"denom": "foo"
    91  		}
    92  	]
    93  }`
    94  
    95  	require.Equal(t, expected, string(indentedBz))
    96  }