cosmos-sdk/x/gov/legacy/v040/migrate_test.go

129 lines
3.4 KiB
Go

package v040_test
import (
"encoding/json"
"testing"
"github.com/stretchr/testify/require"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/simapp"
sdk "github.com/cosmos/cosmos-sdk/types"
v036distr "github.com/cosmos/cosmos-sdk/x/distribution/legacy/v036"
v036gov "github.com/cosmos/cosmos-sdk/x/gov/legacy/v036"
v040gov "github.com/cosmos/cosmos-sdk/x/gov/legacy/v040"
)
func TestMigrate(t *testing.T) {
encodingConfig := simapp.MakeEncodingConfig()
clientCtx := client.Context{}.
WithInterfaceRegistry(encodingConfig.InterfaceRegistry).
WithTxConfig(encodingConfig.TxConfig).
WithLegacyAmino(encodingConfig.Amino).
WithJSONMarshaler(encodingConfig.Marshaler)
recipient, err := sdk.AccAddressFromBech32("cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh")
require.NoError(t, err)
govGenState := v036gov.GenesisState{
Proposals: []v036gov.Proposal{
{
Content: v036gov.TextProposal{
Title: "foo_test",
Description: "bar_test",
},
},
{
Content: v036distr.CommunityPoolSpendProposal{
Title: "foo_community",
Description: "bar_community",
Recipient: recipient,
Amount: sdk.NewCoins(sdk.NewCoin("footoken", sdk.NewInt(2))),
},
},
},
}
migrated := v040gov.Migrate(govGenState)
bz, err := clientCtx.JSONMarshaler.MarshalJSON(migrated)
require.NoError(t, err)
// Indent the JSON bz correctly.
var jsonObj map[string]interface{}
err = json.Unmarshal(bz, &jsonObj)
require.NoError(t, err)
indentedBz, err := json.MarshalIndent(jsonObj, "", " ")
require.NoError(t, err)
// Make sure about:
// - TextProposal and CommunityPoolSpendProposal have correct any JSON.
expected := `{
"deposit_params": {
"max_deposit_period": "0s",
"min_deposit": []
},
"deposits": [],
"proposals": [
{
"content": {
"@type": "/cosmos.gov.v1beta1.TextProposal",
"description": "bar_test",
"title": "foo_test"
},
"deposit_end_time": "0001-01-01T00:00:00Z",
"final_tally_result": {
"abstain": "0",
"no": "0",
"no_with_veto": "0",
"yes": "0"
},
"proposal_id": "0",
"status": "PROPOSAL_STATUS_UNSPECIFIED",
"submit_time": "0001-01-01T00:00:00Z",
"total_deposit": [],
"voting_end_time": "0001-01-01T00:00:00Z",
"voting_start_time": "0001-01-01T00:00:00Z"
},
{
"content": {
"@type": "/cosmos.distribution.v1beta1.CommunityPoolSpendProposal",
"amount": [
{
"amount": "2",
"denom": "footoken"
}
],
"description": "bar_community",
"recipient": "cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh",
"title": "foo_community"
},
"deposit_end_time": "0001-01-01T00:00:00Z",
"final_tally_result": {
"abstain": "0",
"no": "0",
"no_with_veto": "0",
"yes": "0"
},
"proposal_id": "0",
"status": "PROPOSAL_STATUS_UNSPECIFIED",
"submit_time": "0001-01-01T00:00:00Z",
"total_deposit": [],
"voting_end_time": "0001-01-01T00:00:00Z",
"voting_start_time": "0001-01-01T00:00:00Z"
}
],
"starting_proposal_id": "0",
"tally_params": {
"quorum": "0",
"threshold": "0",
"veto_threshold": "0"
},
"votes": [],
"voting_params": {
"voting_period": "0s"
}
}`
require.Equal(t, expected, string(indentedBz))
}