cosmos-sdk/x/bank/types/genesis_test.go

54 lines
1.4 KiB
Go

package types_test
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/x/bank/types"
)
func TestMarshalJSONMetaData(t *testing.T) {
cdc := codec.NewLegacyAmino()
testCases := []struct {
name string
input []types.Metadata
strOutput string
}{
{"nil metadata", nil, `null`},
{"empty metadata", []types.Metadata{}, `[]`},
{"non-empty coins", []types.Metadata{{
Description: "The native staking token of the Cosmos Hub.",
DenomUnits: []*types.DenomUnit{
{"uatom", uint32(0), []string{"microatom"}}, // The default exponent value 0 is omitted in the json
{"matom", uint32(3), []string{"milliatom"}},
{"atom", uint32(6), nil},
},
Base: "uatom",
Display: "atom",
},
},
`[{"description":"The native staking token of the Cosmos Hub.","denom_units":[{"denom":"uatom","aliases":["microatom"]},{"denom":"matom","exponent":3,"aliases":["milliatom"]},{"denom":"atom","exponent":6}],"base":"uatom","display":"atom"}]`},
}
for _, tc := range testCases {
tc := tc
t.Run(tc.name, func(t *testing.T) {
bz, err := cdc.MarshalJSON(tc.input)
require.NoError(t, err)
require.Equal(t, tc.strOutput, string(bz))
var newMetadata []types.Metadata
require.NoError(t, cdc.UnmarshalJSON(bz, &newMetadata))
if len(tc.input) == 0 {
require.Nil(t, newMetadata)
} else {
require.Equal(t, tc.input, newMetadata)
}
})
}
}