package utils_test import ( "testing" "github.com/stretchr/testify/require" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/kava-labs/kava/x/community/client/utils" ) func TestParseDepositProposal(t *testing.T) { cdc := codec.NewAminoCodec(codec.NewLegacyAmino()) okJSON := testutil.WriteToNewTempFile(t, ` { "title": "Community Pool Lend Deposit", "description": "Deposit some KAVA from community pool to Lend!", "amount": [ { "denom": "ukava", "amount": "100000000000" } ] } `) proposal, err := utils.ParseCommunityPoolLendDepositProposal(cdc, okJSON.Name()) require.NoError(t, err) expectedAmount, err := sdk.ParseCoinsNormalized("100000000000ukava") require.NoError(t, err) require.Equal(t, "Community Pool Lend Deposit", proposal.Title) require.Equal(t, "Deposit some KAVA from community pool to Lend!", proposal.Description) require.Equal(t, expectedAmount, proposal.Amount) } func TestParseWithdrawProposal(t *testing.T) { cdc := codec.NewAminoCodec(codec.NewLegacyAmino()) okJSON := testutil.WriteToNewTempFile(t, ` { "title": "Community Pool Lend Withdraw", "description": "Withdraw some KAVA from community pool to Lend!", "amount": [ { "denom": "ukava", "amount": "100000000000" } ] } `) proposal, err := utils.ParseCommunityPoolLendWithdrawProposal(cdc, okJSON.Name()) require.NoError(t, err) expectedAmount, err := sdk.ParseCoinsNormalized("100000000000ukava") require.NoError(t, err) require.Equal(t, "Community Pool Lend Withdraw", proposal.Title) require.Equal(t, "Withdraw some KAVA from community pool to Lend!", proposal.Description) require.Equal(t, expectedAmount, proposal.Amount) } func TestParseFileNoExists(t *testing.T) { cdc := codec.NewAminoCodec(codec.NewLegacyAmino()) _, err := utils.ParseCommunityPoolLendDepositProposal(cdc, "not-a-file.json") require.ErrorContains(t, err, "no such file or directory") _, err = utils.ParseCommunityPoolLendWithdrawProposal(cdc, "not-a-file.json") require.ErrorContains(t, err, "no such file or directory") } func TestParseFileMalformed(t *testing.T) { cdc := codec.NewAminoCodec(codec.NewLegacyAmino()) malformed := testutil.WriteToNewTempFile(t, ` { "title": "I'm malformed b/c there's no closing quote, "description": "A description", "amount": [{"denom": "ukava", "amount": "100000000000"}] } `) _, err := utils.ParseCommunityPoolLendDepositProposal(cdc, malformed.Name()) require.ErrorContains(t, err, "invalid character") _, err = utils.ParseCommunityPoolLendWithdrawProposal(cdc, malformed.Name()) require.ErrorContains(t, err, "invalid character") }