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 }